在将其发送给用户试用版之前,我试图在脚本中构建一些异常处理。为此,我尝试运行try-except
块以捕获我认为可能会发生的错误。
例如,代码使用API与另一软件进行交互。该软件依赖于要安装在计算机中的硬件许可证(USB加密狗),否则Python无法访问该软件,并且脚本以退出代码255退出。下面的代码示例。
code-to-activate-licence
except Exception as e:
warn-user-of-error
我希望try-except
块能够提取退出代码并执行代码的except
部分。但是,我认为,由于激活许可证的尝试似乎并没有引发错误,而是给出了非零的退出代码,因此它似乎没有被try-except
块捕获。有没有办法在实际退出脚本之前捕获该退出代码?
答案 0 :(得分:0)
您正在使用except Exception as e:
,但是库正在调用sys.exit()
,它引发了SystemExit
类型而不是标准BaseException
的{{1}}。 Exception
包含所有非系统退出的异常。
您需要明确捕获Exception
才能中断它。
来自[docs]:
例外SystemExit
此异常由sys.exit()函数引发。它继承自BaseException而不是Exception,因此它不会被捕获Exception的代码意外捕获。
例外例外
所有内置的,非系统退出的异常都派生自此类。所有用户定义的异常也应从此类派生。
在代码中,它将类似于:
SystemExit