我有一個奇怪的問題,我無法解決自己。Python:捕捉異常在函數外部工作,但不在函數內
如果我執行需要兩個單獨的outside_func.py
端子,第二執行捕捉BlockingIOError異常並打印消息:
outside_func.py
import fcntl
import time
# Raise BlockingIOError if same script is already running.
try:
lockfile = open('lockfile', 'w')
fcntl.flock(lockfile, fcntl.LOCK_EX | fcntl.LOCK_NB)
except BlockingIOError:
print('Script already running.')
time.sleep(20)
如果我做相同的inside_func.py
沒什麼被捕獲並且沒有消息被打印:
inside_func.py
import fcntl
import time
# Raise BlockingIOError if same script is already running.
def script_already_running():
try:
lockfile = open('lockfile', 'w')
fcntl.flock(lockfile, fcntl.LOCK_EX | fcntl.LOCK_NB)
except BlockingIOError:
print('Script already running.')
script_already_running()
time.sleep(20)
任何想法?
郵編能重現問題。 –
聽起來像一個問題,你在發佈的代碼之外改變的東西,你沒有意識到是非常重要的。 – user2357112
我更新了例子。現在問題應該是可重現的。 – Rotareti