Курс по 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 упражнения. Разгледайте всички теми в раздела, преди да се захванете с практиката.