python捕获全局异常统一管理_python 全局异常捕获

需要用到sys.excepthook

1、 全局异常钩子

python的程序在运行时,如果遇到异常,需要程序员使用try...catch进行捕获,那么那些没有被捕获的异常,python是如何处理的呢?

对于没有被捕获的异常,python统一用sys.excepthook 这个函数来处理,发生异常时,程序中断并输出很多异常信息。

python允许你重写这个方法,来实现你自己对异常的处理,下面的实例,向你展示了如何重写该方法并处理异常

import sys

def my_excepthook(exc_type, exc_value, tb):

msg = ' Traceback (most recent call last):\n'

while tb:

filename = tb.tb_frame.f_code.co_filename

name = tb.tb_frame.f_code.co_name

lineno = tb.tb_lineno

msg += ' File "%.500s", line %d, in %.500s\n' % (filename, lineno, name)

tb = tb.tb_next

msg += ' %s: %s\n' %(exc_type.__name__, exc_value)

print(msg)

def divide_zero():

1 / 0 # raise ZeroDivisionError

def f():

divide_zero

你可能感兴趣的:(python捕获全局异常统一管理_python 全局异常捕获)