Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Concatenazione delle eccezioni e rilancio | Comprehensive Error Handling
Programmazione Strutturale in Python

Concatenazione delle eccezioni e rilancio

Scorri per mostrare il menu

Quando si gestiscono gli errori in Python, può capitare di trovarsi in una situazione in cui la cattura di un'eccezione porta a sollevarne un'altra diversa. In questi casi, è importante preservare il contesto dell'errore originale. Il chaining delle eccezioni in Python consente di farlo utilizzando la parola chiave from. Collegando esplicitamente le eccezioni, si forniscono traceback più dettagliati, facilitando la comprensione della sequenza di errori che ha portato a un fallimento.

Supponiamo di scrivere una funzione che elabora input da un file. Se si verifica un errore durante la lettura del file, potrebbe essere utile sollevare un'eccezione personalizzata più adatta alla logica dell'applicazione, mantenendo però le informazioni sull'errore originale. Utilizzando raise NewException() from original_exception è possibile ottenere questo risultato.

Il rilancio delle eccezioni è una tecnica correlata. Talvolta, dopo aver catturato un'eccezione, si desidera eseguire alcune operazioni di pulizia o di logging, e poi lasciare che l'eccezione si propaghi verso l'alto. È possibile farlo semplicemente utilizzando raise senza specificare un'eccezione, che rilancia l'ultima eccezione catturata. Sia il chaining che il rilancio delle eccezioni sono strumenti preziosi per scrivere codice robusto e facilmente debugabile.

12345678910111213141516
# Simple exception chaining and re-raising example def divide(a, b): try: return a / b except ZeroDivisionError as err: # Chain a new exception to the original raise ValueError("Cannot divide by zero") from err try: divide(5, 0) except ValueError as e: print("Caught ValueError:") import traceback traceback.print_exc() print("\nRe-raising the exception...\n") raise

Questo codice mostra un esempio semplice di chaining e rilancio delle eccezioni in Python. La funzione divide tenta di dividere due numeri e cattura un ZeroDivisionError, collegandolo a un nuovo ValueError con un messaggio chiaro. Il blocco esterno try-except cattura il ValueError, stampa il traceback completo che mostra entrambe le eccezioni e poi rilancia l'eccezione per propagarla ulteriormente.

question mark

Qual è uno dei principali vantaggi dell'incatenamento delle eccezioni in Python?

Seleziona la risposta corretta

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 1. Capitolo 6

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

Sezione 1. Capitolo 6
some-alt