Usare un'eccezione personalizzata
Fa parte della sezione Logica e flusso del percorso PHP di Coddy. Lezione 57 di 68.
Ora che hai creato la tua classe di eccezione personalizzata, è il momento di metterla in pratica. L'utilizzo di un'eccezione personalizzata prevede due passaggi fondamentali: lanciare il tipo di eccezione specifico quando si verifica un problema e intercettare quel tipo di eccezione per gestirlo in modo appropriato.
Quando lanci un'eccezione personalizzata, usi la stessa parola chiave throw, ma crei un'istanza della tua classe personalizzata invece della classe generica Exception. Questo rende la gestione degli errori più precisa e significativa.
<?php
class InvalidEmailException extends Exception {}
function validateEmail($email) {
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
throw new InvalidEmailException("Invalid email format: " . $email);
}
echo "Email is valid!";
}
?>Il vero potere emerge quando intercetti la tua eccezione personalizzata. Invece di intercettare un generico Exception, puoi intercettare la tua specifica InvalidEmailException. Questo ti permette di gestire diversi tipi di errori in modi diversi, rendendo la gestione degli errori più mirata e informativa.
<?php
try {
validateEmail("invalid-email");
} catch (InvalidEmailException $e) {
echo "Email error: " . $e->getMessage();
}
?>Questo approccio ti offre un controllo preciso sulla gestione degli errori, consentendoti di rispondere in modo diverso ai vari tipi di problemi nella tua applicazione.
Sfida
FacileRiceverai tre input: una stringa per il nome utente, una stringa per la password e un numero che indica la lunghezza minima della password. Il nome utente non deve essere vuoto e la password deve rispettare il requisito di lunghezza minima.
Crea una classe di eccezione personalizzata chiamata InvalidCredentialsException che estende la classe base Exception.
Crea una funzione chiamata validateCredentials che accetta tre parametri: nome utente, password e lunghezza minima. All'interno di questa funzione:
- Se il nome utente è vuoto (una stringa vuota), genera un'eccezione
InvalidCredentialsExceptioncon il messaggio"Username cannot be empty" - Se la lunghezza della password è inferiore alla lunghezza minima, genera un'eccezione
InvalidCredentialsExceptioncon il messaggio"Password must be at least X characters long"(dove X è il valore della lunghezza minima) - Se entrambe le convalide hanno esito positivo, stampa
"Credentials are valid"
Usa un blocco try...catch per chiamare la funzione con gli input forniti. Nel blocco catch, intercetta nello specifico InvalidCredentialsException e stampa "Validation error: " seguito dal messaggio dell'eccezione usando il metodo getMessage().
Formato dell'input:
- Prima riga: una stringa che rappresenta il nome utente (esempio:
john_doeo una stringa vuota) - Seconda riga: una stringa che rappresenta la password (esempio:
pass123) - Terza riga: un numero intero che rappresenta la lunghezza minima della password (esempio:
8)
Output previsto:
- Se le credenziali sono valide:
Credentials are valid - Se il nome utente è vuoto:
Validation error: Username cannot be empty - Se la password è troppo corta:
Validation error: Password must be at least X characters long(dove X è la lunghezza minima)
Provalo tu
<?php
// Leggi l'input
$username = trim(fgets(STDIN));
$password = trim(fgets(STDIN));
$minLength = intval(fgets(STDIN));
// TODO: Scrivi il tuo codice qui sotto
// 1. Crea la classe InvalidCredentialsException
// 2. Crea la funzione validateCredentials
// 3. Usa un blocco try...catch per chiamare la funzione e gestire le eccezioni
?>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