Курс Raku / Об’єкти, введення-виведення та винятки / Винятки / Перехоплення винятків за допомогою try / Вправи / Перехопіть помилку

Розв’язання: Перехопіть помилку

Ось один із можливих варіантів розв’язання задачі.

Код

my $ok = try { 6 * 7 };
say $ok;

my $bad = try { die 'broken' };
say $bad.defined;
say $!.message;

🦋 Вихідний код можна знайти у файлі catch-the-error.raku.

Вивід

42
False
broken

Коментарі

  1. Коли блок виконується без помилки, try просто обчислюється у значення блоку, тож $ok містить 42.

  2. die всередині другого блоку кидає виняток, тож цей блок обчислюється в невизначене значення, і $bad.defined дає False.

  3. Перехоплений виняток зберігається в спеціальній змінній $!, а $!.message повертає наданий йому текст — broken.

Навігація курсом

Перехопіть помилку   |   Коли все йде добре