2014-11-27 12 views
5

In Python 2, sono tutte le eccezioni che possono essere richieste per ereditare da Exception da raise?`try ... tranne Exception as e` cattura ogni possibile eccezione?

Cioè, è la seguente sufficiente per catturare ogni possibile eccezione:

try: 
    code() 
except Exception as e: 
    pass 

o devo qualcosa di ancora più generale come

try: 
    code() 
except: 
    pass 
+1

No. Ma a meno che non vogliate fottigliare le cose, non fatelo neanche. –

+1

@ IgnacioVazquez-Abrams E se ho bisogno che il mio programma continui, non importa cosa succede in 'code()'? – jaynp

+1

Quindi stai usando la piattaforma sbagliata. –

risposta

6

Con la prima variante ti cattura "tutto eccezioni incorporate non di sistema "(https://docs.python.org/2/library/exceptions.html), e dovrebbe catturare eccezioni definite dall'utente (" tutte le eccezioni definite dall'utente dovrebbero anche essere derivate da questa classe ").

Ad esempio, la prima variante non catturerà Control-C premuto dall'utente (KeyboardInterrupt), ma la seconda volontà.

+0

Quindi è sicuro dire che la seconda cattura tutto? – jaynp

+0

@jpp, yes - "Una clausola esente da espressioni, se presente, deve essere l'ultima, corrisponde a qualsiasi eccezione." https://docs.python.org/2/reference/compound_stmts.html#except –

Problemi correlati