Menu
Coddy logo textTech

Il blocco 'finally'

Fa parte della sezione Logica e flusso del percorso PHP di Coddy. Lezione 54 di 68.

A volte hai bisogno di codice che venga eseguito indipendentemente dal fatto che si verifichi o meno un’eccezione. Il blocco finally offre questa garanzia: contiene codice che verrà sempre eseguito dopo il completamento di un blocco try...catch, rendendolo perfetto per operazioni di pulizia come la chiusura di file o connessioni al database.

Il blocco finally viene eseguito in tutti gli scenari: quando il blocco try termina correttamente senza eccezioni, quando viene lanciata e intercettata un'eccezione e persino quando viene lanciata ma non intercettata. Questa affidabilità lo rende prezioso per garantire che il codice di pulizia importante venga sempre eseguito.

<?php
try {
    echo "Attempting operation...\n";
    // Codice che potrebbe generare un'eccezione
} catch (Exception $e) {
    echo "Error: " . $e->getMessage() . "\n";
} finally {
    echo "Cleanup completed.\n";
}
?>

Il blocco finally viene eseguito dopo che i blocchi try e catch hanno entrambi terminato, offrendo un punto fisso in cui inserire il codice essenziale per la pulizia. Questo assicura che lo script gestisca correttamente le risorse e mantenga uno stato pulito, indipendentemente da ciò che accade durante l’esecuzione.

challenge icon

Sfida

Facile

Riceverai due input: un tipo di operazione e un numero. Il primo input è una stringa che sarà "divide" oppure "multiply". Il secondo input è un numero che verrà utilizzato nell'operazione.

Leggi entrambi gli input e crea un blocco try...catch...finally. All'interno del blocco try, controlla il tipo di operazione:

  • Se l'operazione è "divide", controlla se il numero è zero. Se è zero, lancia una nuova Exception con il messaggio "Cannot divide by zero". Se il numero non è zero, calcola 100 diviso per il numero e stampa "Result: " seguito dal risultato.
  • Se l'operazione è "multiply", calcola 100 moltiplicato per il numero e stampa "Result: " seguito dal risultato.

Nel blocco catch, gestisci qualsiasi eccezione stampando "Error: " seguito dal messaggio dell'eccezione usando il metodo getMessage().

Nel blocco finally, stampa "Operation completed".

Formato dell'input:

  • Prima riga: una stringa che indica il tipo di operazione (o divide o multiply)
  • Seconda riga: un numero (esempio: 5 oppure 0 oppure 2.5)

Output previsto:

  • Se l'operazione riesce: Result: seguito dal valore calcolato, poi Operation completed su una nuova riga
  • Se si verifica una divisione per zero: Error: Cannot divide by zero, poi Operation completed su una nuova riga

Provalo tu

<?php
// Leggi i dati di input
$operation = trim(fgets(STDIN));
$number = floatval(fgets(STDIN));

// TODO: Scrivi il tuo codice qui sotto
// Crea un blocco try...catch...finally per gestire l'operazione

?>
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore PHP online