Errori Python ed eccezioni integrate

In questo tutorial, imparerai a conoscere diversi tipi di errori ed eccezioni incorporati in Python. Vengono sollevati ogni volta che l'interprete Python incontra errori.

Video: gestione delle eccezioni Python

Possiamo fare alcuni errori durante la scrittura di un programma che portano a errori quando proviamo a eseguirlo. Un programma python termina non appena incontra un errore non gestito. Questi errori possono essere classificati a grandi linee in due classi:

  1. Errori di sintassi
  2. Errori logici (eccezioni)

Errori di sintassi Python

L'errore causato dal mancato rispetto della struttura (sintassi) corretta del linguaggio è chiamato errore di sintassi o errore di analisi .

Diamo un'occhiata a un esempio:

 >>> if a < 3 File "", line 1 if a < 3 SyntaxError: invalid syntax

Come mostrato nell'esempio, una freccia indica dove il parser si è imbattuto nell'errore di sintassi.

Possiamo notare qui che nell'istruzione :mancano i due punti if.

Errori logici Python (eccezioni)

Gli errori che si verificano in fase di esecuzione (dopo aver superato il test di sintassi) sono chiamati eccezioni o errori logici .

Ad esempio, si verificano quando proviamo ad aprire un file (per la lettura) che non esiste ( FileNotFoundError), proviamo a dividere un numero per zero ( ZeroDivisionError), o proviamo a importare un modulo che non esiste ( ImportError).

Ogni volta che si verificano questi tipi di errori di runtime, Python crea un oggetto eccezione. Se non gestito correttamente, stampa una traccia di quell'errore insieme ad alcuni dettagli sul motivo per cui si è verificato l'errore.

Diamo un'occhiata a come Python tratta questi errori:

 >>> 1 / 0 Traceback (most recent call last): File "", line 301, in runcode File "", line 1, in ZeroDivisionError: division by zero >>> open("imaginary.txt") Traceback (most recent call last): File "", line 301, in runcode File "", line 1, in FileNotFoundError: (Errno 2) No such file or directory: 'imaginary.txt'

Eccezioni integrate in Python

Le operazioni illegali possono sollevare eccezioni. Ci sono molte eccezioni integrate in Python che vengono sollevate quando si verificano errori corrispondenti. Possiamo visualizzare tutte le eccezioni incorporate utilizzando la local()funzione incorporata come segue:

 print(dir(locals()('__builtins__')))

locals()('__builtins__')restituirà un modulo di eccezioni, funzioni e attributi incorporati. dirci permette di elencare questi attributi come stringhe.

Di seguito sono elencate alcune delle comuni eccezioni integrate nella programmazione Python insieme all'errore che le causa:

Eccezione Causa dell'errore
AssertionError Generato quando assertun'istruzione fallisce.
AttributeError Generato quando l'assegnazione o il riferimento dell'attributo fallisce.
EOFError Generato quando la input()funzione raggiunge la condizione di fine file.
FloatingPointError Generato quando un'operazione in virgola mobile fallisce.
GeneratorExit Solleva quando close()viene chiamato il metodo di un generatore .
ImportError Generato quando il modulo importato non viene trovato.
IndexError Generato quando l'indice di una sequenza è fuori intervallo.
KeyError Generato quando una chiave non viene trovata in un dizionario.
KeyboardInterrupt Generato quando l'utente preme il tasto di interruzione ( Ctrl+Co Delete).
MemoryError Generato quando un'operazione esaurisce la memoria.
NameError Generato quando una variabile non viene trovata nell'ambito locale o globale.
NotImplementedError Generato con metodi astratti.
OSError Generato quando il funzionamento del sistema causa un errore relativo al sistema.
OverflowError Generato quando il risultato di un'operazione aritmetica è troppo grande per essere rappresentato.
ReferenceError Generato quando un proxy di riferimento debole viene utilizzato per accedere a un referente raccolto in Garbage Collection.
RuntimeError Generato quando un errore non rientra in nessun'altra categoria.
StopIteration Generato dalla next()funzione per indicare che non ci sono ulteriori elementi da restituire dall'iteratore.
SyntaxError Generato dal parser quando viene rilevato un errore di sintassi.
IndentationError Sollevato quando c'è un rientro errato.
TabError Generato quando il rientro è costituito da tabulazioni e spazi incoerenti.
SystemError Generato quando l'interprete rileva un errore interno.
SystemExit Elevato dalla sys.exit()funzione.
TypeError Generato quando una funzione o un'operazione viene applicata a un oggetto di tipo errato.
UnboundLocalError Generato quando viene fatto un riferimento a una variabile locale in una funzione o un metodo, ma nessun valore è stato associato a quella variabile.
UnicodeError Generato quando si verifica un errore di codifica o decodifica relativo a Unicode.
UnicodeEncodeError Generato quando si verifica un errore relativo a Unicode durante la codifica.
UnicodeDecodeError Generato quando si verifica un errore relativo a Unicode durante la decodifica.
UnicodeTranslateError Generato quando si verifica un errore relativo a Unicode durante la traduzione.
ValueError Generato quando una funzione riceve un argomento di tipo corretto ma valore improprio.
ZeroDivisionError Generato quando il secondo operando della divisione o dell'operazione modulo è zero.

Se necessario, possiamo anche definire le nostre eccezioni in Python. Per saperne di più su di loro, visita Python User-defined Exceptions.

Siamo in grado di gestire queste eccezioni built-in e definiti dall'utente in Python che utilizzano try, excepte finallydichiarazioni. Per saperne di più su di loro, visita Python try, tranne e finalmente le dichiarazioni.

Articoli interessanti...