Dovrete fare questo separatitry
blocchi:
try:
code a
except ExplicitException:
pass
try:
code b
except ExplicitException:
try:
code c
except ExplicitException:
try:
code d
except ExplicitException:
pass
Questo presuppone che si desidera eseguire code c
solo se code b
fallito.
Se avete bisogno di eseguire code c
indipendentemente, è necessario mettere le try
blocchi uno dopo l'altro:
try:
code a
except ExplicitException:
pass
try:
code b
except ExplicitException:
pass
try:
code c
except ExplicitException:
pass
try:
code d
except ExplicitException:
pass
sto usando except ExplicitException
qui perché è mai una buona pratica di ciecamente ignora tutte le eccezioni. Sarete ignorando MemoryError
, KeyboardInterrupt
e SystemExit
pure in caso contrario, che normalmente non si vuole ignorare o intercettare senza un qualche tipo di re-raise o ragione cosciente per la gestione di quelli.
fonte
2013-06-26 14:03:11
Per essere espliciti, si vuole 'C' codice da eseguire * solo quando il codice b genera un'eccezione *? –
Tutti i codici devono essere eseguiti, in un blocco try, anche se sollevano un'eccezione. – arvidurs
Non puoi averlo. Un blocco 'try' non è lì per sopprimere le eccezioni su tutto il codice eseguito. Ti farà * catturare * l'eccezione quando succede, ma il resto del blocco non viene mai eseguito. –