Курс по Raku / Обекти, вход-изход и изключения / Изключения

Обекти на изключения

Изключението е обект, като всеки друг в Raku. Когато напишете die 'something failed', Raku обвива вашето съобщение в обект на изключение от типа X::AdHoc.

Вътре в CATCH можете да разгледате този обект. Типът му идва от .^name, а текстът му — от .message:

{
    die 'something failed';

    CATCH {
        default {
            say .^name;   # X::AdHoc
            say .message; # something failed
        }
    }
}

Знанието на типа ви позволява да третирате различните грешки различно. Вградените изключения на Raku имат конкретни типове, чиито имена започват с X::, и можете да ги съпоставяте с when, точно както съпоставяхте стойности в блок given/when:

{
    die 'something failed';

    CATCH {
        when X::AdHoc {
            say 'an ad-hoc error: ' ~ .message;
        }
        default {
            say 'some other error';
        }
    }
}

Това отпечатва an ad-hoc error: something failed, защото изключението съвпадна с типа X::AdHoc. Съпоставянето по тип е основата на обработката на конкретни грешки — идеята, върху която надгражда разделът за собствените изключения.

Практика

Направете 1 тест върху съдържанието на тази тема.

Упражнения

Този раздел съдържа 3 упражнения. Разгледайте всички теми в раздела, преди да се захванете с практиката.

  1. Назовете грешката
  2. Съпоставете типа
  3. Представка към съобщението

Навигация в курса

Тест — CATCH   |   Назовете грешката