例外的标准格式(如默认sys.excepthook
打印)就像
"%s: %s" % (type(e).__name__, e)
然而,这似乎容易出错。例如,如果未定义__name__
,该怎么办?
有一些标准方式吗?我查看了traceback
模块,它似乎处理了很多特殊情况。
答案 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属性,所以每个班级都有它