Cursus Raku / Obiecta, introitus et exitus, et exceptiones / Exceptiones / Exceptiones propriae / Exercises / Nimis magnum
Solutio: Nimis magnum
Ecce solutio possibilis huius exercitationis.
Codex
class TooBig is Exception {
has $.value;
has $.limit;
method message {
"Value $.value exceeds the limit of $.limit";
}
}
my $limit = 50;
for 30, 99, 60 -> $value {
TooBig.new(value => $value, limit => $limit).throw if $value > $limit;
say "Value $value is within the limit";
CATCH {
when TooBig {
say .message;
say "Try a value up to {.limit}.";
}
}
}🦋 Inveni codicem fontem in archivo too-big.raku.
Exitus
Value 30 is within the limit
Value 99 exceeds the limit of 50
Try a value up to 50.
Value 60 exceeds the limit of 50
Try a value up to 50.Commentarii
TooBig is Exceptionclassem exceptionem iaciendam reddit. Duo data fert,valueetlimit, et methodus eiusmessageutrumque in textum nuntiatum texit..throwexceptionem excitat, etwhen TooBigei genere convenit. Tractator plus agit quam nuntium imprimere: attributumlimitrecta ex obiecto capto legit ut consilium utile det. Haec est utilitas exceptionis propriae prae mera chorda — tractator data structurata accipit in quibus agere potest.Exceptio solum tunc iacitur cum
$value > $limit. Pro30nulla exceptio excitatur et corpus anuli usque ad suumsaycurrit, imprimens valorem intra limitem esse. Pro99et60throwaccenditur, itaque illudsaypraeteritur etCATCHloco eius tractat. Corpusforipsum est clausula quamCATCHcustodit, itaque exceptio capta solum iterationem currentem finit — anulus deinde simpliciter ad valorem sequentem movetur.