Raku kurss / Objekti, ievade/izvade un izņēmumi / Izņēmumi
Fāzeris CATCH
Bloks try ir ērts, taču tas visu bloku uztver kā vienu
veselumu: vai nu tas nostrādā, vai ne. Fāzeris CATCH dod
smalkāku vadību — tas ļauj izņēmumu apstrādāt iekšpus tā bloka,
kurā tas notika, un izlemt, ko darīt.
CATCH ir fāzeris, tāpat kā tie, ar kuriem iepazināties
sadaļā par vadības plūsmu. To rakstāt
jebkur bloka iekšienē; tas izpildās tikai tad, ja tur tiek izmests
izņēmums. Izņēmums ir pieejams kā tēma $_:
{
die 'Boom!';
CATCH {
default {
say 'Caught: ' ~ .message;
}
}
}
say 'after';Programma izdrukā:
Caught: Boom!
afterBloks default CATCH iekšienē apstrādā
jebkuru izņēmumu. Kad tas ir izpildījies, izņēmums tiek uzskatīts par
apstrādātu, tāpēc programma neapstājas — izpilde turpinās aiz apņemošā
bloka, un tieši tāpēc tiek izdrukāts after.
Bez CATCH die būtu beidzis programmu, pirms
after varētu tikt sasniegts.
Prakse
Jūs gaida 1 viktorīna par šī temata saturu.
Vingrinājumi
Šajā sadaļā ir 3 vingrinājumi. Pirms ķerieties pie vingrinājumiem, izlasiet visus šīs sadaļas tematus.