我们知道,可以通过CATCH块来处理故障。
在下面的示例中,我们在“ other-sub”中创建一个“ AdHoc”失败,并在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
我的问题是:如何区分CATCH块中的失败和“正常”异常,以便区分这两种情况?