Creare un'eccezione personalizzata
Fa parte della sezione Logica e flusso del percorso PHP di Coddy. Lezione 56 di 68.
Sebbene la classe integrata Exception di PHP funzioni bene per la gestione generale degli errori, creare classi di eccezione personalizzate consente di fornire messaggi di errore molto più specifici e significativi. Le eccezioni personalizzate ti aiutano a distinguere tra diversi tipi di problemi nel tuo codice e a gestirli in modo appropriato.
Per creare un'eccezione personalizzata, estendi la classe base Exception di PHP usando la parola chiave extends. Questa ereditarietà fornisce alla tua eccezione personalizzata tutte le funzionalità dell'eccezione standard, consentendoti al contempo di aggiungere un comportamento specifico o semplicemente di darle un nome più descrittivo.
<?php
class InvalidEmailException extends Exception {
// La classe può essere vuota: eredita tutto da Exception
}
// Puoi anche aggiungere proprietà o metodi personalizzati
class CustomException extends Exception {
public function getCustomMessage() {
return "Custom error: " . $this->getMessage();
}
}
?>Il vantaggio delle eccezioni personalizzate risiede nei loro nomi descrittivi e nella possibilità di intercettare tipi specifici di eccezioni. Invece di intercettare una generica Exception, puoi intercettare InvalidEmailException, DatabaseConnectionException o qualsiasi altra eccezione personalizzata che crei. Questo rende la gestione degli errori più precisa e il codice più facile da mantenere.
Sfida
FacileRiceverai un input: una stringa che rappresenta il nome di una classe di eccezione. Questo input sarà una singola parola da usare come nome della tua classe di eccezione personalizzata (esempio: NegativeBalanceException o InvalidUsernameException).
Leggi l’input e crea una classe di eccezione personalizzata usando il nome fornito. La tua classe di eccezione personalizzata deve estendere la classe base Exception di PHP. Dopo aver creato la classe, stampa "Custom exception created: " seguito dal nome della classe ricevuto come input.
Formato dell’input: Una riga contenente una stringa che rappresenta il nome della classe di eccezione (esempio: InvalidAgeException)
Output previsto: Custom exception created: seguito dal nome della classe di eccezione
Provalo tu
<?php
// Leggi il nome della classe dell'eccezione
$className = trim(fgets(STDIN));
// TODO: Scrivi il tuo codice qui sotto per creare la classe di eccezione personalizzata
// Mostra il risultato
echo "Custom exception created: " . $className;
?>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