簡體   English   中英

如何在python中的try除了塊內使用具有不同返回碼的多個sys.exit()

[英]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以及GeneratorExitKeyboardInterrupt ,這就是為什么它們是唯一不是從Exception派生的3個異常的原因。 請參閱異常層次結構文檔

如果必須捕獲SystemExit ,則可以從code屬性讀取退出代碼:

try:
    # ...
except SystemExit as sysexit:
    sys.exit(sysexit.code)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM