C'è qualche differenza tra except:
e except Exception:
?Differenza tra eccezione: e ad eccezione Eccezione:
Can except
può trattare tutto ciò che non è un'eccezione?
C'è qualche differenza tra except:
e except Exception:
?Differenza tra eccezione: e ad eccezione Eccezione:
Can except
può trattare tutto ciò che non è un'eccezione?
A partire da Python 2.5, è disponibile un nuovo BaseException
che funge da classe base per Exception
. Di conseguenza, qualcosa come GeneratorExit che inerisce direttamente da BaseException
verrebbe rilevato da except:
ma non da except Exception:
.
+1 per aver menzionato 'BaseException'. Una cosa importante che 'except:' rileva che 'tranne Exception:' does not is 'KeyboardInterrupt'. L'uso liberale di bare 'except:' può rendere difficile fermare i tuoi script! – kindall
Questo è corretto. [KeyboardInterrupt] (http://docs.python.org/2/library/exceptions.html#exceptions.KeyboardInterrupt) eredita anche da BaseException. – marcoseu
SystemExit eredita anche da BaseExcrption –
Questo è dal doc
Se si verifica un'eccezione che non corrisponde a quella citata nella clausola except , viene trasmessa a eventuali istruzioni try di livello superiore; se non viene trovato alcun gestore , si tratta di un'eccezione non gestita e l'esecuzione si interrompe con un messaggio come mostrato sopra.
Si può anche essere più specifici.
>>> while True:
... try:
... x = int(raw_input("Please enter a number: "))
... break
... except ValueError:
... print "Oops! That was no valid number. Try again..."
Qui, si entra clausola except solo se si è di fronte l'errore di nome, ValueError
No, sono funzionalmente identici :-) –
In realtà, io prendo quella posteriore - sono diversi –