Курс по Raku / Обекти, вход-изход и изключения / Изключения / Меки откази / Exercises / Търсене или ненамерено
Решение: Търсене или ненамерено
Ето едно възможно решение на задачата.
Код
sub lookup($key) {
fail 'no such key' if $key ne 'a';
return 100;
}
my $r = lookup('z');
if $r.defined {
say $r;
}
else {
say 'not found';
say "reason: {$r.exception.message}";
}🦋 Намерете програмата във файла lookup.raku.
Изход
not found
reason: no such keyКоментари
lookup('z')извикваfail, така че връща недефиниранFailure.Понеже резултатът е недефиниран, програмата отпечатва
not found, вместо да се опитва да използва провалилата се стойност.Failureвсе пак носи изключението, което описва какво се е объркало.$r.exceptionго извлича — което заедно с това отбелязва провала като обработен, за да не гръмне по-късно, — а.messageпрочита текста, подаден наfail:no such key.