[英]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.