เรารู้ว่าสามารถจัดการความล้มเหลวได้โดยบล็อกการจับ
ในตัวอย่างต่อไปนี้เราสร้างความล้มเหลว '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
คำถามของฉันคือ: เราจะแยกความแตกต่างระหว่างความล้มเหลวและข้อยกเว้น "ปกติ" ในบล็อก CATCH เพื่อแยกความแตกต่างระหว่างสองกรณีได้อย่างไร