Prova/eccetto Python e gestione degli errori

Evita che i tuoi script Python si blocchino. Scopri i blocchi try, tranne, infine e come generare correttamente le eccezioni personalizzate.

Prova nell'editor

Panoramica

Nel mondo reale della programmazione, gli errori sono del tutto inevitabili. I file potrebbero essere eliminati, le connessioni di rete potrebbero interrompersi oppure un utente potrebbe inserire una lettera quando lo script prevedeva un numero. Se questi scenari si verificano senza protezioni, Python interrompe l'esecuzione e lancia un'eccezione (un errore di runtime), mandando in crash l'intero programma. La gestione degli errori è l’arte di anticipare e gestire con garbo questi fallimenti.

Il fondamento della gestione degli errori in Python è la struttura a blocchi "try" e "eccetto". Inserisci il codice potenzialmente pericoloso all'interno del blocco "try". Python tenterà di eseguirlo. Se si verifica un errore, invece di bloccarsi, Python intercetta l'eccezione e salta immediatamente giù per eseguire il codice contenuto nel blocco "eccetto". Ciò consente al programma di ripristinarsi, visualizzare un messaggio di errore amichevole e continuare a funzionare.

È una best practice fondamentale individuare eccezioni specifiche e mirate anziché scrivere un blocco generale "eccetto:". Ad esempio, rilevare `FileNotFoundError` o `ValueError` garantisce esplicitamente che stai gestendo esattamente il problema previsto, anziché mascherare accidentalmente bug non correlati (come un errore di sintassi) di cui hai veramente bisogno di essere informato.

Python fornisce anche un blocco opzionale `else`, che viene eseguito solo se il blocco `try` è stato completato con successo senza generare errori. Questo è il luogo perfetto per inserire la logica che dipende assolutamente dal successo dell'operazione pericolosa. Inoltre, il blocco "finalmente" fornisce un modo per eseguire il codice indipendentemente da ciò che accade, indipendentemente dal fatto che si sia verificato un errore o meno. Il blocco "finalmente" è vitale per le azioni di pulizia, come la chiusura delle connessioni al database o il rilascio dei blocchi sui file.

Oltre a rilevare gli errori, Python consente agli sviluppatori di attivarli esplicitamente utilizzando la parola chiave "raise". La generazione di un'eccezione ti consente di applicare vincoli rigorosi nella tua logica, rifiutando i dati non validi prima che danneggino lo stato dell'applicazione. Definendo classi di eccezioni personalizzate che ereditano dalla classe "Exception" di base di Python, gli sviluppatori possono creare gerarchie di errori altamente specifiche del dominio per applicazioni aziendali di grandi dimensioni.

Codice e output di esecuzione

Creazione di sicurezza strutturale quando si interagisce con strutture di file potenzialmente pericolose o inesistenti.

def divide_numbers(a, b):
    try:
        result = a / b
    except ZeroDivisionError:
        return "Error: Cannot divide by zero!"
    except TypeError:
        return "Error: Both arguments must be numbers."
    else:
        return f"The result is {result}"
    finally:
        print("Execution completed.")

print(divide_numbers(10, 2))
print(divide_numbers(10, 0))
Uscita terminale
Execution completed.
The result is 5.0
Execution completed.
Error: Cannot divide by zero!

Implementazione passo dopo passo

  • Convalida degli invii dei moduli utente
  • Garantire che le richieste di rete non si blocchino in caso di timeout
  • Chiusura sicura delle connessioni al database in un blocco finale

Domande frequenti

Qual è la parola chiave "aumento"?

La parola chiave raise viene utilizzata per sollevare un'eccezione intenzionalmente. È possibile definire il tipo di errore da generare e il testo da stampare per l'utente.

Argomenti correlati

Risorse Python consigliate

Espandi le tue conoscenze con tutorial interattivi, foglietti illustrativi e confronti di codici correlati.