Python:捕获通用(任何)异常时,如何将异常名称存储在变量中?

use*_*889 5 python exception try-catch

我知道我可以使用以下语法将异常名称存储在变量中:

try:
    code
except TypeError as e:
    logger.error(e)
except NameError as e:
    logger.error(e)
Run Code Online (Sandbox Code Playgroud)

如何对通用except:消息执行相同的操作?我认为这(这是一般想法)行不通:

try:
    code
except as e:
    logger.error(e)
Run Code Online (Sandbox Code Playgroud)

Ric*_*fel 3

您可以使用 type(e).__name__ 捕获遇到的任何错误的名称,并使用 e.message 作为普通变量访问消息。所有内置错误(indexError、TypeError 等)都是 Exception 类的子级,因此它们将被拾取。将其保存为名为“err”的变量:

try:
   code
except Exception as e:
   err = type(e).__name__
   message = e.message
Run Code Online (Sandbox Code Playgroud)

这将使用内置的 __name__ 变量保存您遇到的基本 python 类型 Exception 的任何异常的错误类型