Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Comprendere la Gerarchia delle Eccezioni | Comprehensive Error Handling
Programmazione Strutturale in Python

Comprendere la Gerarchia delle Eccezioni

Scorri per mostrare il menu

Quando si lavora con la gestione degli errori in Python, è importante comprendere la struttura delle sue classi di eccezione integrate. Tutte le exceptions ereditano dalla classe radice BaseException. La maggior parte di quelle che si gestiscono nel codice quotidiano sono sottoclassi di Exception, che a sua volta è un figlio diretto di BaseException. Questa progettazione consente di intercettare ampie categorie di errori o di gestire problemi specifici.

Eccezioni comunemente utilizzate come ValueError, TypeError, KeyError e IOError (conosciuta anche come OSError nelle versioni moderne di Python) sono tutte sottoclassi di Exception. Esistono anche eccezioni più specializzate, come ZeroDivisionError e IndexError, che ereditano da queste classi generali. Alcune eccezioni, come KeyboardInterrupt e SystemExit, ereditano direttamente da BaseException - queste di solito non sono destinate a essere intercettate nei programmi normali.

Comprendere questa gerarchia aiuta a scrivere blocchi try/except precisi, intercettando solo ciò che si intende e evitando di mascherare segnali di sistema critici.

1234567891011121314151617181920212223242526272829303132
def raise_and_catch_exceptions(): # Catching a ValueError try: int("not a number") except ValueError as ve: print("Caught ValueError:", ve) # Catching a ZeroDivisionError (subclass of ArithmeticError) try: result = 10 / 0 except ZeroDivisionError as zde: print("Caught ZeroDivisionError:", zde) # Catching a TypeError try: result = "10" + 5 except TypeError as te: print("Caught TypeError:", te) # Catching an OSError (formerly IOError) try: open("file_that_does_not_exist.txt") except OSError as oe: print("Caught OSError:", oe) # Catching a general Exception (will catch most, but not all, exceptions) try: raise KeyError("missing key") except Exception as e: print("Caught Exception:", type(e).__name__, "-", e) raise_and_catch_exceptions()

1. Quale classe di eccezione integrata useresti per intercettare errori durante il tentativo di convertire una stringa in un intero che non può essere convertito?

2. Quale eccezione integrata viene sollevata quando si tenta di accedere a una chiave di un dizionario che non esiste?

question mark

Quale classe di eccezione integrata useresti per intercettare errori durante il tentativo di convertire una stringa in un intero che non può essere convertito?

Seleziona la risposta corretta

question mark

Quale eccezione integrata viene sollevata quando si tenta di accedere a una chiave di un dizionario che non esiste?

Seleziona la risposta corretta

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 1. Capitolo 1

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 1
some-alt