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

Розв’язання: Назвіть помилку

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

Код

sub risky {
    die 'sub failed';
}

{
    risky();

    CATCH {
        default {
            say .^name;
            say .message;
        }
    }
}

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

Вивід

X::AdHoc
sub failed

Коментарі

  1. die стається всередині risky, але виняток мандрує вгору до викликача. CATCH у блоці, який викликав risky, його обробляє, — саме так зазвичай і працює обробка помилок: збій і його обробник не мусять бути в одній підпрограмі.

  2. Звичайний die із рядком створює виняток X::AdHoc, про що й повідомляє .^name, а .message повертає текст, переданий до die.

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

Назвіть помилку   |   Зіставте тип