繁体   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