Corso di Raku / Oggetti, input/output ed eccezioni / Eccezioni / Eccezioni personalizzate / Exercises / Due tipi di eccezione
Soluzione: Due tipi di eccezione
Ecco una possibile soluzione del compito.
Codice
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' }
}
}
}🦋 Trova il programma nel file two-exceptions.raku.
Output
small
bigCommenti
Il ciclo solleva una
TooSmallal primo passaggio e unaTooBigal secondo, ciascuna dentro un blocco a sé con il proprioCATCH.Il phaser
CATCHha un ramowhenper ogni tipo di eccezione. A ogni passaggio gira solo il ramo che corrisponde al tipo sollevato — quindi il primo passaggio stampasmalle il secondo stampabig. È così che un unico insieme di gestori reagisce in modo diverso a generi diversi di errore.