在将异常处理发送给用户试用之前,我尝试在脚本中构建一些异常处理。为了实现这一点,我试图运行try-except块来捕获我认为可能发生的错误。
例如,代码使用API与另一段软件交互。该软件依赖硬件许可(USB )安装在teh计算机上,否则Python无法访问该软件,脚本退出代码255退出。下面的代码示例。
code-to-activate-licence
except Exception as e:
warn-user-of-error我希望try-except块获取退出代码并执行代码的except部分。但是,我假设,由于激活许可证的尝试似乎并不会引发错误,而是给出一个非零的退出代码,因此它似乎没有被try-except块捕获。在这个退出代码实际退出脚本之前,有什么方法可以捕捉到它吗?
发布于 2019-04-30 16:02:31
但是,您使用的是except Exception as e:,但是库调用的是sys.exit(),它将引发一个类型为BaseException的SystemExit,而不是一个标准的Exception。Exception包含所有非系统退出的异常。
您需要显式地捕获SystemExit才能中断它。
来自[博士]
异常SystemExit 此异常由sys.exit()函数引发。它继承自BaseException而不是异常,这样就不会意外地被捕获异常的代码捕获。异常 所有内置的、非系统退出的异常都是从这个类派生出来的。所有用户定义的异常也应该从这个类派生出来。
在代码中,它看起来类似于:
try:
somecode()
except Exception as e:
do_something_with_exception(e)
except SystemExit as x:
do_something_not_exit(x)https://stackoverflow.com/questions/55924660
复制相似问题