尽管try-except块,但Python脚本以退出代码255退出

问题描述 投票:1回答:1

我试图在将其发送到用户试用版之前在我的脚本中构建一些异常处理。为了达到这个目的,我试图运行try-except块以捕获我认为可能发生的错误。

例如,代码使用API​​与另一个软件进行交互。该软件依赖于安装在计算机中的硬件许可证(USB加密狗),否则Python无法访问该软件,并且脚本将以退出代码255退出。下面的代码示例。

    code-to-activate-licence
except Exception as e:
     warn-user-of-error

我希望try-except块能够获取退出代码并执行代码的except部分。但是,我认为,因为尝试激活许可证似乎没有引发错误,而是提供非零退出代码,它似乎没有被try-except块捕获。有没有办法在实际退出脚本之前捕获此退出代码?

python exception try-catch
1个回答
0
投票

你正在使用except Exception as e:但是该库正在调用sys.exit(),它引发的是SystemExit,而不是标准的BaseExceptionException包含所有非系统退出的例外。

你需要明确地捕获Exception以便中断它。

来自SystemExit

异常SystemExit

sys.exit()函数引发此异常。它继承自BaseException而不是Exception,因此它不会被捕获Exception的代码意外捕获。

异常异常

所有内置的,非系统退出的异常都派生自此类。所有用户定义的异常也应该从该类派生。

在代码中它看起来像:

[docs]
© www.soinside.com 2019 - 2024. All rights reserved.