Lanciare un'eccezione
Fa parte della sezione Logica e flusso del percorso PHP di Coddy. Lezione 55 di 68.
A volte devi segnalare che qualcosa è andato storto nel tuo codice e interrompere la normale esecuzione. La parola chiave throw ti permette di creare e lanciare manualmente un'eccezione, dandoti il controllo su quando e perché il tuo programma dovrebbe gestire una condizione di errore.
Quando generi un'eccezione, crei un nuovo oggetto Exception e gli fornisci un messaggio descrittivo su cosa è andato storto. Questa eccezione interromperà immediatamente l'esecuzione del codice corrente e cercherà un blocco catch che la gestisca.
<?php
function checkAge($age) {
if ($age < 0) {
throw new Exception("Age cannot be negative");
}
echo "Age is valid: " . $age;
}
try {
checkAge(-5);
} catch (Exception $e) {
echo "Error: " . $e->getMessage();
}
?>L'istruzione throw richiede la sintassi new Exception(), in cui passi un messaggio stringa che descrive il problema. Questo messaggio può essere recuperato in seguito usando il metodo getMessage() nel blocco catch, rendendo più facile capire cosa è andato storto e rispondere in modo appropriato.
Sfida
FacileRiceverai due input: un numero che rappresenta un prezzo e un numero che rappresenta una percentuale di sconto. Entrambi gli input saranno forniti come numeri (il prezzo potrebbe essere un decimale e la percentuale di sconto sarà un numero intero compreso tra 0 e 100).
Leggi entrambi gli input e crea una funzione chiamata calculateFinalPrice che accetta due parametri: il prezzo e la percentuale di sconto. All'interno di questa funzione, controlla se la percentuale di sconto è maggiore di 100 o minore di 0. Se una delle due condizioni è vera, genera una nuova Exception con il messaggio "Invalid discount percentage". Se lo sconto è valido, calcola il prezzo finale dopo aver applicato lo sconto e restituiscilo.
Usa un blocco try...catch per chiamare la funzione con gli input forniti. Nel blocco try, chiama la funzione e stampa "Final price: " seguito dal prezzo finale calcolato. Nel blocco catch, gestisci l'eccezione stampando "Error: " seguito dal messaggio dell'eccezione usando il metodo getMessage().
Formato dell'input:
- Prima riga: un numero che rappresenta il prezzo (esempio:
100o49.99) - Seconda riga: un numero intero che rappresenta la percentuale di sconto (esempio:
20o150)
Output previsto:
- Se lo sconto è valido:
Final price:seguito dal prezzo calcolato dopo lo sconto - Se lo sconto non è valido:
Error: Invalid discount percentage
Provalo tu
<?php
// Leggi i dati di input
$price = floatval(fgets(STDIN));
$discountPercentage = intval(fgets(STDIN));
// TODO: Scrivi il tuo codice qui sotto
// Crea la funzione calculateFinalPrice
// Usa un blocco try...catch per chiamare la funzione e gestire le eccezioni
// Stampa l'output appropriato
?>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