Corso di Raku / Oggetti, input/output ed eccezioni / Eccezioni / Intercettare le eccezioni con try

Quiz — try

Cosa stampa il programma seguente?

my $r = try {
    die 'Boom!';
    say 'inside';
};

say 'outside';
1outside
0inside
0inside e poi outside
0Boom!
0un errore

Qui succedono due cose. Primo, die interrompe subito il resto del blocco try, quindi la riga say 'inside' non viene mai raggiunta: dal blocco non viene stampato nulla. Secondo, poiché try intercetta l’eccezione, il programma stesso non si ferma: l’esecuzione prosegue oltre il blocco e say 'outside' gira normalmente. L’unica riga stampata è quindi outside. ($r sarebbe non definito, e il messaggio Boom! starebbe ad aspettare in $! se lo guardassi.)

Soluzione: Tentativo o valore predefinito   |   Il phaser CATCH