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

Решение: Два типа изключения

Ето едно възможно решение на задачата.

Код

class TooSmall is Exception {
    method message { 'too small' }
}

class TooBig is Exception {
    method message { 'too big' }
}

for TooSmall, TooBig -> $type {
    {
        $type.new.throw;

        CATCH {
            when TooSmall { say 'small' }
            when TooBig   { say 'big' }
        }
    }
}

🦋 Намерете програмата във файла two-exceptions.raku.

Изход

small
big

Коментари

  1. Цикълът хвърля TooSmall при първото преминаване и TooBig при второто, всяко вътре в собствен блок със свой CATCH.

  2. Фазерът CATCH има по един клон when за всеки тип изключение. При всяко преминаване се изпълнява само клонът, съвпадащ с хвърления тип — така първото преминаване отпечатва small, а второто big. Ето как един-единствен набор от обработващи реагира различно на различни видове грешки.

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

Два типа изключения   |   Тест — Собствени изключения