Raku kurss / Objekti, ievade/izvade un izņēmumi / Izņēmumi
Izņēmumu objekti
Izņēmums ir objekts, gluži kā jebkurš cits Raku valodā. Kad rakstāt
die 'something failed', Raku jūsu paziņojumu ietin izņēmuma
objektā ar tipu X::AdHoc.
CATCH iekšienē šo objektu var izpētīt. Tā tips nāk no
.^name, bet teksts no .message:
{
die 'something failed';
CATCH {
default {
say .^name; # X::AdHoc
say .message; # something failed
}
}
}Zinot tipu, dažādas kļūdas var apstrādāt dažādi. Raku iebūvētajiem
izņēmumiem ir savi tipi, kuru nosaukumi sākas ar X::, un
tiem var piemeklēt atbilstību ar when, gluži tāpat, kā
piemeklējāt vērtības given/when blokā:
{
die 'something failed';
CATCH {
when X::AdHoc {
say 'an ad-hoc error: ' ~ .message;
}
default {
say 'some other error';
}
}
}Tas izdrukā an ad-hoc error: something failed, jo
izņēmums atbilda tipam X::AdHoc. Atbilstības piemeklēšana
pēc tipa ir pamats konkrētu kļūdu apstrādei — ideja, uz kuras būvējas
sadaļa par pašu definētiem
izņēmumiem.
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.