Cursus Raku / Objecten, in- en uitvoer en excepties / Excepties / Eigen excepties / Exercises / Twee exceptietypes
Oplossing: Twee exceptietypes
Hier is een mogelijke oplossing voor de taak.
Code
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' }
}
}
}🦋 Je kunt de broncode vinden in het bestand two-exceptions.raku.
Uitvoer
small
bigOpmerkingen
De lus werpt bij de eerste ronde een
TooSmallen bij de tweede eenTooBig, elk binnen een eigen blok met een eigenCATCH.De
CATCH-faser heeft eenwhen-tak voor elk exceptietype. Bij elke ronde draait alleen de tak die op het geworpen type matcht — dus de eerste ronde druktsmallaf en de tweedebig. Zo reageert één stel afhandelaars verschillend op verschillende soorten fouten.