Ho ottenuto un elenco di funzioni che potrebbero non riuscire, e se uno fallisce, non voglio che lo script si fermi, ma per continuare con la funzione successiva.Come evitare "un'eccezione troppo ampia" in questo caso?
sto eseguendo con qualcosa di simile:
list_of_functions = [f_a,f_b,f_c]
for current_function in list_of_functions:
try:
current_function()
except Exception:
print(traceback.format_exc())
Sta lavorando bene, ma non è PEP8 compatibile:
Quando la cattura di eccezioni, menzione eccezioni specifiche ogni volta possibile, invece di utilizzare a nudo eccetto: clausola.
Ad esempio, utilizzare:
try: import platform_specific_module except ImportError: platform_specific_module = None
A nuda ad eccezione di: clausola di cattura SystemExit e KeyboardInterrupt eccezioni, rendendo più difficile per interrompere un programma con Control-C, e può mascherare altri problemi. Se si desidera rilevare tutte le eccezioni che segnalano errori di programma, utilizzare tranne Eccezione: (nuda eccetto che è equivalente ad eccezione di BaseException:).
Una buona regola è quella di limitare l'uso della nuda 'tranne' clausole di due casi:
Se il gestore di eccezioni sarà stampare o registrazione della traceback; almeno l'utente sarà consapevole che si è verificato un errore.
Se il codice deve eseguire qualche operazione di pulizia, ma consente di propagare l'eccezione verso l'alto con aumento. provare ... finalmente può essere un modo migliore per gestire questo caso.
Come fare in questo modo?
Non capisco cosa stai chiedendo. Quali tipi di eccezioni * vuoi * gestire? – BrenBarn
quali eccezioni potrebbero essere sollevate dalla tua funzione? – haifzhan
'tranne Eccezione:' è diverso da nullo 'eccetto: '. Quella sezione PEP8 avverte su quest'ultimo, stai facendo il primo. – roippi