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 seconds

Commenti

  1. Quando il die solleva l’eccezione, il resto del blocco viene abbandonato — quindi la riga $timeout = 60 non gira mai e $timeout mantiene il suo valore predefinito 30.

  2. Il CATCH gestisce 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.

Segnalate e recuperate   |   Quiz — CATCH