Menu
Coddy logo textTech

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.

challenge icon

Sfida

Facile

Riceverai 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: 100 o 49.99)
  • Seconda riga: un numero intero che rappresenta la percentuale di sconto (esempio: 20 o 150)

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

?>
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore PHP online