Corso di Raku / Oggetti,
input/output ed eccezioni / Eccezioni / Il
phaser CATCH / Exercises / Segnalate e
recuperate
Soluzione: Segnalate e recuperate
Ecco una possibile soluzione del compito.
Codice
my $timeout = 30;
{
die 'config missing';
$timeout = 60;
CATCH {
default {
say "warning: {.message}; keeping default";
}
}
}
say "timeout is $timeout seconds";🦋 Trova il programma nel file report-and-recover.raku.
Output
warning: config missing; keeping default
timeout is 30 secondsCommenti
Quando il
diesolleva l’eccezione, il resto del blocco viene abbandonato — quindi la riga$timeout = 60non gira mai e$timeoutmantiene il suo valore predefinito30.Il
CATCHgestisce l’eccezione (stampando un avviso), quindi il programma non si ferma. Prosegue con il valore predefinito, che è esattamente ciò che significa recuperare da un errore: prendere nota del problema, ripiegare su qualcosa di sicuro e continuare.