Курс по Raku / Обекти, вход-изход и изключения / Изключения
Фазерът CATCH
Блокът try е удобен, но третира целия блок като едно
цяло: или работи, или не. Фазерът CATCH ви дава по-фин
контрол — той позволява да обработите изключение вътре в блока,
където се е случило, и да решите какво да правите.
CATCH е фазер, като онези, с които се запознахте в раздела за управлението на потока.
Пишете го където и да е вътре в блок; изпълнява се само ако там бъде
хвърлено изключение. Изключението е достъпно като темата
$_:
{
die 'Boom!';
CATCH {
default {
say 'Caught: ' ~ .message;
}
}
}
say 'after';Програмата отпечатва:
Caught: Boom!
afterБлокът default вътре в CATCH обработва
всяко изключение. Щом той се изпълни, изключението се смята за
обработено, така че програмата не спира — изпълнението продължава след
обхващащия блок, затова се отпечатва after.
Без CATCH die би приключил програмата,
преди да се стигне до after.
Практика
Направете 1 тест върху съдържанието на тази тема.
Упражнения
Този раздел съдържа 3 упражнения. Разгледайте всички теми в раздела, преди да се захванете с практиката.