Python 格式化异常的常用方法

Python 格式化异常的常用方法,python,python-3.x,Python,Python 3.x,默认sys.excepthook打印的异常的标准格式如下 "%s: %s" % (type(e).__name__, e) 然而,对我来说,这似乎很容易出错。例如,如果未定义_名称_,该怎么办 有什么标准的方法吗?我研究了回溯模块,它似乎处理了很多特殊情况 标准方法是仅使用traceback.format\u exception\u。如果您需要自定义格式等,您可以从那里复制逻辑并进行修改,例如IPython可以执行此操作。我使用此代码捕获并记录所有错误,希望对您有用 import traceb

默认sys.excepthook打印的异常的标准格式如下

"%s: %s" % (type(e).__name__, e)
然而,对我来说,这似乎很容易出错。例如,如果未定义_名称_,该怎么办


有什么标准的方法吗?我研究了回溯模块,它似乎处理了很多特殊情况

标准方法是仅使用traceback.format\u exception\u。如果您需要自定义格式等,您可以从那里复制逻辑并进行修改,例如IPython可以执行此操作。

我使用此代码捕获并记录所有错误,希望对您有用

import traceback
def my_handler(exctype, value, tb):
    logger.error(''.join(traceback.format_tb(tb))+
                 '{0}: {1}'.format(exctype.__name__, value))

sys.excepthook = my_handler

__name_uu是一个内置属性,所以每个类都会有它

怎么能不定义类型的名称呢?类型总是有一个名称。这样做的一个更大的危险是,type对于旧式类来说是错误的。