sys.excepthook -vs- 处理异常

sys.excepthook -vs- handled exceptions

我注意到处理的异常不会导致调用 sys.excepthook... 回想起来这很有意义。

但是,如何 do 我记录或自定义 handled 异常的处理方式?当这段代码执行时...

try:
    1/0
except:
    pass

我希望能够记录 ZeroDivisionError 已被处理的事实。

有办法吗?

您可以获得 Exception 并打印有关它的信息,或者使用您自己的日志记录调用记录它:

try:
  1/0
except Exception, e:
  print("a {0} was not raised".format(e.__class__.__name__))
  # or logging.yourLogger(e.__class__.__name__)
  pass

结果:

a ZeroDivisionError was not raised

如果您正在寻找某种全局异常处理,那可能不是微不足道的,或者 not possible 没有将所有内容都包含在 try/except.