格式化异常的常用方法

时间:2014-08-05 12:43:37

标签: python python-3.x

例外的标准格式(如默认sys.excepthook打印)就像

"%s: %s" % (type(e).__name__, e)

然而,这似乎容易出错。例如,如果未定义__name__,该怎么办?

有一些标准方式吗?我查看了traceback模块,它似乎处理了很多特殊情况。

2 个答案:

答案 0 :(得分:0)

标准方法是使用traceback.format_exception_only。如果你想要自定义格式化等,你可以从那里复制逻辑并修改它(例如IPython这样做)。

答案 1 :(得分:0)

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

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__是一个buid-in属性,所以每个班级都有它