python怎么处理异常然后继续_Python异常处理-返回行,继续
通常,在try塊內觸發異常后,您永遠都無法將執行返回到特定的代碼段,因為該異常可能在很深的某個地方發生,并受其他線程的其他副作用影響的許多其他狀態.盡管您的程序可能不是這種情況,但是鑒于沒有通用的解決方案允許在Python中進行此操作,因此使用異常處理基本上不可能實現您想做的事情.
但是,SIGINT信號的默認處理程序是引發KeyboardInterrupt異常-如果您可以劫持該鍵盤以執行其他操作,則實際上可以實現此目的.這是一個簡單的程序:
import signal
import pdb
def signal_handler(signal, frame):
pdb.set_trace()
signal.signal(signal.SIGINT, signal_handler)
count = 0
while True:
count += 1
SIGINT處理程序現在只是一個在當前幀調用調試器的函數,每按一次Ctrl-C,就會在代碼所在幀的確切點觸發調試器.當然,您可以簡單地檢查以下值:
$python /tmp/script.py
^C--Return--
> /tmp/script.py(5)signal_handler()->None
-> pdb.set_trace()
(Pdb) u
> /tmp/script.py(10)()
-> while True:
(Pdb) pp count
13321869
(Pdb) c
^C--Return--
> /tmp/script.py(5)signal_handler()->None
-> pdb.set_trace()
(Pdb) quit
Traceback (most recent call last):
...
if self.quitting: raise BdbQuit
bdb.BdbQuit
因此,在ctrl-c完成后調試器被觸發,然后我跳到運行循環的框架(在您的情況下為您的代碼),然后繼續執行,再次殺死它并觸發了錯誤的退出(通過鍵入quit)終止程序.如果將其合并,則基本上可以隨時中斷并在任何地方檢查程序的值.
總結
以上是生活随笔為你收集整理的python怎么处理异常然后继续_Python异常处理-返回行,继续的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python execute_comma
- 下一篇: python中with as用法_pyt