[英]How to use multiple sys.exit() with different return codes inside a try except block in python
我有一個python腳本,它被稱為父腳本的subprocess
。 在此腳本中,我在try
塊內有多個if
語句,並且使用與這些if
語句不同的返回碼來執行sys.exit()
。 代碼的結構是這樣的:
def func3():
try:
# bunch of other code
if condition1:
print 'condition 1'
sys.exit(1)
if condition2:
print 'condition 2'
sys.exit(0)
.
.
.
except:
print 'In the except'
#what sys.exit() to put here
if __name__ == '__main__':
func3()
我知道這不是寫這種方法的好方法,但是我必須使用try
因為代碼的許多不同部分可能會導致某些錯誤,並且if
條件取決於這些代碼的執行和結果。
現在的問題是,我該如何放置此代碼,以便它成功執行帶有適當退出代碼的sys.exit()
。 我應該在except
部分中放入什么sys.exit()
,就像我從try
內部執行sys.exit(1)
從sys.exit(0)
內部執行sys.exit(0)
一樣, except
返回代碼將為0
而不是1
。
您在這里玩神奇寶貝; 您正在追趕他們。 不要那樣做
最多抓住Exception
; sys.exit()
引發的SystemExit
異常不會從Exception
繼承(僅從BaseException
繼承),而只會通過以下方式傳遞:
try:
# ...
except Exception:
# ...
無論如何,應該很少捕獲SystemExit
以及GeneratorExit
和KeyboardInterrupt
,這就是為什么它們是唯一不是從Exception
派生的3個異常的原因。 請參閱異常層次結構文檔 。
如果必須捕獲SystemExit
,則可以從code
屬性讀取退出代碼:
try:
# ...
except SystemExit as sysexit:
sys.exit(sysexit.code)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.