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

  1. Обработете и продължете
  2. Оцелейте в цикъл
  3. Съобщете и се възстановете

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

Тест — try   |   Обработете и продължете