Gestione degli Errori in PHP: `try`, `catch` ed Eccezioni

PHP

Quando si scrive codice, gli errori sono inevitabili. Un file potrebbe non esistere, una connessione al database potrebbe fallire, un'API esterna potrebbe non rispondere. Gestire questi errori in modo robusto è fondamentale per creare applicazioni stabili.

Il Vecchio Modo: Controllare i Valori di Ritorno

In passato, molte funzioni PHP restituivano `false` o `NULL` in caso di errore. Questo costringeva a scrivere codice pieno di `if` per controllare il risultato di ogni operazione, il che poteva diventare verboso e difficile da mantenere.

Il Modo Moderno: Le Eccezioni (Exceptions)

La programmazione a oggetti ha introdotto un meccanismo molto più pulito: le eccezioni. Un'eccezione è un oggetto che viene "lanciato" (`throw`) quando si verifica un errore. L'idea è di separare la logica "felice" (il codice che esegui quando tutto va bene) dalla logica di gestione degli errori.

Il Blocco `try...catch`

Per gestire le eccezioni, si usa un blocco `try...catch`.

  • `try`: In questo blocco inserisci il codice che potrebbe generare un'eccezione.
  • `catch`: Questo blocco viene eseguito solo se il codice nel blocco `try` lancia un'eccezione. Riceve l'oggetto eccezione, che contiene informazioni utili sull'errore (come un messaggio o il file e la linea dove si è verificato).
function dividi($a, $b) {
    if ($b == 0) {
        throw new Exception("Divisione per zero non permessa!");
    }
    return $a / $b;
}

try {
    echo dividi(10, 2); // Stampa 5
    echo dividi(5, 0);  // Lancia un'eccezione
    echo "Questa riga non verrà mai eseguita.";
} catch (Exception $e) {
    echo "Si è verificato un errore: " . $e->getMessage();
}

Il Blocco `finally`

Si può aggiungere un blocco `finally` opzionale. Il codice in questo blocco viene eseguito sempre, sia che un'eccezione sia stata lanciata o meno. È utile per le operazioni di "pulizia", come chiudere una connessione al database o un file, indipendentemente dall'esito dell'operazione.

Usare le eccezioni rende il codice più pulito, leggibile e robusto, centralizzando la gestione degli errori in un unico punto.

Hai bisogno di una soluzione su misura?

Dalla Web App al gestionale custom, trasformiamo le tue idee in software performante. Contattaci per una consulenza gratuita.

Richiedi una consulenza