Kurso de Raku / Objektoj, en- kaj eligo kaj escepto / Esceptoj / Propraj esceptoj / Exercises / Du esceptotipoj

Solvo: Du esceptotipoj

Jen ebla solvo de la tasko.

Kodo

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' }
        }
    }
}

🦋 Vi povas trovi la fontkodon en la dosiero two-exceptions.raku.

Eligo

small
big

Komentoj

  1. La buklo ĵetas TooSmall ĉe la unua paso kaj TooBig ĉe la dua, ĉiun ene de sia propra bloko kun sia propra CATCH.

  2. La fazero CATCH havas branĉon when por ĉiu esceptotipo. Ĉe ĉiu paso, nur la branĉo kongrua kun la ĵetita tipo ruliĝas — do la unua paso presas small kaj la dua presas big. Tiel unu sola aro da trakteroj reagas malsame al malsamaj specoj de eraro.

Kursa navigado

Du esceptotipoj   |   Kvizo — Propraj esceptoj