我有一个专门为这个问题编写的小python脚本。
#!/usr/bin/python3
import sys
def testfunc(test):
if test == 1:
print("test is 1")
else:
print("test is not 1")
sys.exit(0)
try:
testfunc(2)
except:
print("something went wrong")
print("if test is not 1 it should not print this")
我期望的是当test = 2时脚本应该退出。相反,我得到的是这个;
test is not 1
something went wrong
if test is not 1 it should not print this
我是python的新手,但不是脚本/编码。我到处搜索,每个答案都只是“ use sys.exit()”
当sys.exit()包含在try / except中时,它似乎具有意外的行为。如果我删除尝试,它的行为将达到预期的
这是正常行为吗?如果是这样,有没有一种方法可以硬退出脚本,而当test = 2时,脚本可以继续执行到异常块中?
注意:这是示例代码,是我打算在另一个脚本中使用的逻辑的简化版本。 try / except之所以存在,是因为将使用变量调用testfunc(),并且如果提供的函数名称无效,我想捕获该异常
预先感谢
编辑:我也尝试过quit(),exit(),os._exit()并提高SystemExit
答案 0 :(得分:0)
在这里,sys.exit(0)
raises是 SystemExit
例外。
由于您将调用代码放在Try-Except
块中,因此已按预期捕获了代码。如果您要传播异常,请调用具有代码状态的sys.exit()
:
try:
testfunc(2)
except SystemExit as exc:
sys.exit(exc.code) # reperform an exit with the status code
except:
print("something went wrong")
print("if test is not 1 it should not print this")