Kurso de Raku / Objektoj, en- kaj eligo kaj escepto / Esceptoj

Esceptobjektoj

Escepto estas objekto, kiel ĉiu alia en Raku. Kiam vi skribas die 'something failed', Raku envolvas vian mesaĝon en esceptobjekton de la tipo X::AdHoc.

Ene de CATCH, vi povas inspekti tiun objekton. Ĝia tipo venas de .^name, kaj ĝia teksto de .message:

{
    die 'something failed';

    CATCH {
        default {
            say .^name;   # X::AdHoc
            say .message; # something failed
        }
    }
}

Koni la tipon permesas al vi trakti malsamajn erarojn malsame. La enkonstruitaj esceptoj de Raku havas specifajn tipojn, kies nomoj komenciĝas per X::, kaj vi povas kongrui kun ili per when, ĝuste kiel vi kongruis valorojn en bloko given/when:

{
    die 'something failed';

    CATCH {
        when X::AdHoc {
            say 'an ad-hoc error: ' ~ .message;
        }
        default {
            say 'some other error';
        }
    }
}

Ĉi tio presas an ad-hoc error: something failed, ĉar la escepto kongruis kun la tipo X::AdHoc. Kongrui laŭ la tipo estas la bazo de trakti specifajn erarojn — la ideo, sur kiu la sekcio pri propraj esceptoj konstruas.

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.

  1. Nomu la eraron
  2. Kongruigu la tipon
  3. Prefiksu la mesaĝon

Kursa navigado

Kvizo — CATCH   |   Nomu la eraron