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

时间:2019-04-30 15:53:04

标签: python exception try-catch

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

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

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

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

1 个答案:

答案 0 :(得分:0)

您正在使用except Exception as e:,但是库正在调用sys.exit(),它引发了SystemExit类型而不是标准BaseException的{​​{1}}。 Exception包含所有非系统退出的异常。

您需要明确捕获Exception才能中断它。

来自[docs]

  

例外SystemExit

     
    

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

  
     

例外例外

     
    

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

  

在代码中,它将类似于:

SystemExit