我嘗試退出腳本,但它不退出。我退出()腳本,但它不退出
這裏是我的代碼:
import sys
try:
...
print "I'm gonna die!"
sys.exit()
except:
...
print 'Still alive!'
而且結果是:
I'm gonna die!
Still alive!
爲什麼?
我嘗試退出腳本,但它不退出。我退出()腳本,但它不退出
這裏是我的代碼:
import sys
try:
...
print "I'm gonna die!"
sys.exit()
except:
...
print 'Still alive!'
而且結果是:
I'm gonna die!
Still alive!
爲什麼?
如果你真的需要立即退出,並且想跳過正常的退出處理,那麼你可以使用os._exit(status)
。但是,正如其他人所說的那樣,使用正常路徑退出通常要好得多,並且只是沒有捕獲到異常。當我們談論這個話題時,KeyboardInterrupt
是另一個你可能不希望看到的例外。 (使用except Exception
將不會捕獲SystemExit
或KeyboardInterrupt
。)
您正在使用您的毯子except
子句捕捉SystemExit
例外。不要這樣做。總是指定你期望避免這些事情的例外。
在這種情況下'except Exception'就足夠了,因爲'SystemExit'不會繼承那個... – 2013-04-22 13:04:13
sys.exit()
是通過引發SystemExit
異常來實現的,所以清除最後指定的動作,除了try語句的子句外,並且可以在外層攔截退出嘗試。
在你的例子中,SystemExit
被以下except
語句捕獲。
謝謝!這是我在這種情況下真正需要的。 – 2013-04-23 22:27:05