失敗はCATCHブロックで処理できることがわかっています。
次の例では、「AdHoc」障害(other-sub内)を作成し、CATCHブロック(my-sub内)で例外を処理します。
sub my-sub {
try {
CATCH {
when X::AdHoc { say 'AdHoc Exception handled here'; .resume }
default {say 'Other Exception'; .resume}
}
my $b = other-sub();
$b.so ?? $b.say !! 'This was a Failure'.say;
}
}
sub other-sub { fail 'Failure_X' }
my-sub();
出力は次のとおりです。
AdHoc Exception handled here
This was a Failure
しかし、私の質問は次のとおりです。2つのケースを区別するために、CATCHブロックで障害と「通常の」例外をどのように区別できますか?