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.
Sfida
FacileRiceverai 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 nuovaExceptioncon 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
divideomultiply) - Seconda riga: un numero (esempio:
5oppure0oppure2.5)
Output previsto:
- Se l'operazione riesce:
Result:seguito dal valore calcolato, poiOperation completedsu una nuova riga - Se si verifica una divisione per zero:
Error: Cannot divide by zero, poiOperation completedsu 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
?>Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Logica e flusso
1Funzioni avanzate
Funzioni anonimeClosure e 'use'Funzioni frecciaFunzioni callbackUso di 'call_user_func'Funzioni variabiliPassaggio per riferimentoFunzioni ricorsiveRiepilogo: carrellata di funzioni4Array multidimensionali
Creare un array 2DAccedere agli elementi di un array 2DModificare gli elementi di un array 2DIterare con cicli annidatiArray associativi 2DRipasso: esercizio con una griglia semplice2Manipolazioni avanzate degli array
Aggiungere con 'array_push'Rimuovere con 'array_pop'Aggiungere con 'array_unshift'Rimuovere con 'array_shift'Unire array indicizzatiUnire array associativiEstrarre con 'array_slice'Valori con 'in_array'Chiavi con 'array_search'Riepilogo: esercizio playlist5Registro dei voti degli studenti
Configurazione del progetto: struttura dei datiAggiungere un nuovo studenteAggiungere un voto a uno studenteCalcolare la media dello studenteTrovare lo studente con la media più altaGenerare una pagella8Gestione degli errori e delle eccezioni
Comprendere gli errori PHPIl blocco 'try...catch'Il blocco 'finally'Lanciare un'eccezioneCreare un'eccezione personalizzataUsare un'eccezione personalizzataRiepilogo: convalida dell'input3Ordinare gli array
Ordina gli array indicizzati in ordine crescenteOrdina gli array indicizzati in ordine decrescenteOrdina gli array associativi per valoreOrdina gli array associativi per chiaveOrdinamento naturaleOrdinamento personalizzato con 'usort'Ripasso: ordinamento della classificaEsercitati da solo: Compilatore PHP online