Raku kurss / Objekti, ievade/izvade un izņēmumi / Izņēmumi

Paša veidoti izņēmumi

Bez iebūvētajiem X:: izņēmumiem varat definēt savējos. Paša definēts izņēmums ir klase, kas manto no iebūvētās klases Exception un nodrošina metodi message:

class TooBig is Exception {
    has $.value;

    method message {
        "Value $.value is too big";
    }
}

TooBig ir parasta klase — tai var būt atribūti, piemēram, value —, taču, tā kā tā is Exception, to var izmest. To izmetat, izveidojot objektu un izsaucot uz tā .throw:

my $value = 20 * 30;

TooBig.new(value => $value).throw if $value > 50;

CATCH {
    when TooBig {
        say .message;
    }
}

Programma izdrukā:

Value 600 is too big

CATCH iekšienē when TooBig atbilst, jo izmestais objekts ir šī tipa. Paša definēts izņēmums nes sev līdzi tos datus, ko tam dodat (šeit value), tāpēc apstrādātājs var uzbūvēt precīzu paziņojumu vai reaģēt konkrētā veidā — daudz noderīgāk nekā vienkārša virkne, kas padota die.

Tas savij kopā visu šo daļu: paša definēts izņēmums ir klase (ar atribūtiem un metodi), kas piedalās izņēmumu mehānismā, gatava paziņot tieši to, kas noticis greizi.

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.

  1. Pārāk liels
  2. Negatīva skaitļa kļūda
  3. Divi izņēmumu tipi

Kursa navigācija

Viktorīna — fail   |   Pārāk liels