Курс 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Коментарі
Коли блок виконується без помилки,
tryпросто обчислюється у значення блоку, тож$okмістить42.dieвсередині другого блоку кидає виняток, тож цей блок обчислюється в невизначене значення, і$bad.definedдаєFalse.Перехоплений виняток зберігається в спеціальній змінній
$!, а$!.messageповертає наданий йому текст —broken.