Kurso de Raku / Objektoj, en- kaj eligo kaj escepto / Esceptoj
Propraj esceptoj
Krom la enkonstruitaj esceptoj X::, vi povas difini
viajn proprajn. Propra escepto estas klaso, kiu heredas de la
enkonstruita klaso Exception kaj provizas metodon
message:
class TooBig is Exception {
has $.value;
method message {
"Value $.value is too big";
}
}TooBig estas normala klaso — ĝi povas havi atributojn
kiel value — sed ĉar ĝi is Exception, ĝi povas
esti ĵetata. Vi ĵetas ĝin kreante objekton kaj vokante
.throw sur ĝi:
my $value = 20 * 30;
TooBig.new(value => $value).throw if $value > 50;
CATCH {
when TooBig {
say .message;
}
}La programo presas:
Value 600 is too bigEne de la CATCH, when TooBig kongruas, ĉar
la ĵetita objekto estas de tiu tipo. Propra escepto portas kiajn ajn
datumojn vi donas al ĝi (ĉi tie, la value), do la traktilo
povas konstrui precizan mesaĝon aŭ reagi laŭ specifa maniero — multe pli
utile ol simpla ĉeno transdonita al die.
Ĉi tio kunigas ĉion en ĉi tiu parto: propra escepto estas klaso (kun atributoj kaj metodo), kiu partoprenas en la escepta maŝinaro, preta signali ĝuste tion, kio misiris.
Praktiko
Vin atendas 1 kvizo pri la enhavo de ĉi tiu temo.
Ekzercoj
En ĉi tiu sekcio estas 3 ekzercoj. Trarigardu ĉiujn temojn de ĉi tiu sekcio antaŭ ol komenci la ekzercojn.
Kursa navigado
← Kvizo — fail |
Tro granda
→