Eccezioni

In Python, è molto facile eseguire operazioni come divisioni e gestione di file. Tuttavia, a volte possono verificarsi errori durante l'esecuzione del programma, causando un arresto improvviso. È qui che entra in gioco la gestione delle eccezioni. Python utilizza i blocchi try e except per gestire le eccezioni. Le operazioni che possono generare eccezioni vengono inserite all'interno del blocco try, mentre il codice per gestire le eccezioni viene inserito nel blocco except.
Consideriamo una semplice operazione di divisione:
a = int(input())
b = int(input())
print(a / b)
print('The program continues...')
Nel caso in cui gli input siano 10 e 2, il programma stamperebbe 5.0 e The program continues.... Tuttavia, se inseriamo 10 e 0, il programma si arresterebbe e stamperebbe un messaggio di errore: ZeroDivisionError: division by zero.
Per gestire questo errore, possiamo usare la gestione delle eccezioni:
try:                       # Provare a eseguire le operazioni nel blocco
    a = int(input())
    b = int(input())
    print(a / b)
except ZeroDivisionError:  # Cosa fare se si verifica uno ZeroDivisionError
    print('Error: Division by zero is not allowed.')

print('The program continues...')
Ora, se eseguiamo il programma con gli input 10 e 0, stamperà Error: Division by zero is not allowed. e The program continues....
Allo stesso modo, possiamo gestire altre eccezioni come ValueError, che si verifica quando l'input non è un intero. Possiamo aggiungere un altro blocco except per gestire questo errore:
try:
    a = int(input())
    b = int(input())
    print(a / b)
except ZeroDivisionError:
    print('Error: Division by zero is not allowed.')
except ValueError:
    print('Error: Input is not a valid integer.')
Possiamo aggiungere quanti blocchi except vogliamo per gestire diversi tipi di eccezioni. In questo modo, possiamo assicurarci che il nostro programma non si arresti improvvisamente a causa di errori e possiamo fornire messaggi utili all'utente.
💡
È importante notare che l'ordine dei blocchi except è fondamentale. Python eseguirà il primo blocco except che corrisponde al tipo di errore verificatosi. Se nessuno dei blocchi except corrisponde, l'errore non verrà gestito.
È anche possibile catturare più eccezioni in una sola linea:
try:
    a = int(input())
    b = int(input())
    print(a / b)
except (ZeroDivisionError, ValueError) as e:
    print('Error:', e)
Qui, e conterrà l'istanza dell'eccezione sollevata.
Utilizzando la gestione delle eccezioni, possiamo rendere i nostri programmi Python più robusti e facili da usare.

Esercizio: Area di un Rettangolo

Devi scrivere un programma che legga due numeri in virgola mobile dall'input; questi numeri h e w rappresentano l'altezza e la larghezza di un rettangolo. Il tuo compito è calcolare e stampare l'area del rettangolo.
Tuttavia, non tutti gli input sono garantiti come numeri validi. Se h o w non sono numeri, dovresti gestire l'eccezione e stampare The input is not a number.
La prima linea dell'input contiene l'altezza h e la seconda linea contiene la larghezza w.
Il programma dovrebbe stampare una sola linea con l'area del rettangolo se gli input sono numeri validi o The input is not a number se uno o entrambi gli input non sono numeri validi.
Input
Output
5.2 7.8
40.56
3.7 abc
The input is not a number
abc 5.5
The input is not a number
abc def
The input is not a number
Nota: L'input conterrà solo numeri positivi nel caso siano numeri.
 

Constraints

Time limit: 1 seconds

Memory limit: 512 MB

Output limit: 1 MB

To check your solution you need to sign in
Sign in to continue