14.10.5 处理异常
对于atexit回调中产生的异常,会在控制台上打印这些异常的Traceback,最后产生的异常会被重新抛出,并作为程序的最后一个错误消息。
import atexit
def exit_with_exception(message):
raise RuntimeError(message)
atexit.register(exit_with_exception,'Registered first')
atexit.register(exit_with_exception,'Registered second')
注册顺序会控制执行顺序。如果一个回调中的某个错误引入了另一个回调中的一个错误 (较早注册,但较后调用),那么向用户显示时,最后的错误消息可能并不是最有用的错误消息。
通常最好的办法是在清理函数中处理异常并悄悄地记入日志,因为程序退出时显示一大堆错误会很乱。