Tutti i documenti ci dicono è,Quando viene sollevato KeyboardInterrupt in Python?
sollevata quando l'utente preme il tasto di interruzione (normalmente
Control-C
oDelete
). Durante l'esecuzione, viene effettuato regolarmente un controllo per gli interrupt.
Ma dal punto del codice, quando posso vedere questa eccezione? Si verifica durante l'esecuzione dell'istruzione? Solo tra dichiarazioni? Può accadere nel mezzo di un'espressione?
Ad esempio:
file_ = open('foo')
# <-- can a KeyboardInterrupt be raised here, after the successful
# completion of open but prior to the try? -->
try:
# try some things with file_
finally:
# cleanup
Sarà questa perdita di codice nel corso di una tempestiva KeyboardInterrupt
? O è sollevato durante l'esecuzione di alcune dichiarazioni o espressioni?
Sfortunatamente, un 'with' non è sempre possibile; a volte vuoi vedere se l'espressione nell'istruzione with fallisce (ad es. ha sollevato una particolare expcetion?) prima di chiamare '__enter__'. Non puoi farlo con 'with', perché perdi la capacità di avvolgere l'espressione senza avvolgere il corpo di' with'. (Che, se può generare lo stesso tipo di eccezione di with-expression, significa che non puoi distinguerli nel tuo 'except'.) – Thanatos