terminate.jpg

首页

技术分享

python 全局异常捕获

对于异常处理,一直有不同的流派,主要分为两个观点,一个是认为应该在主函数用一个最通用的Exception来囊括所有的异常,另一种是在敲代码的时候遇到可能出错的代码在去捕获精准的错误,如果是没有考虑到的可以让他报错。

那么我是第二种观点,但是不得不承认这种方法也有缺点,那就是报错真的很不友好,那么有没有两全其美的方法呢?

全局异常处理函数

import sys

def global_exception_handler(exc_typeexc_valueexc_traceback):
print('this is a global exception handler')
print(str(exc_traceback))

sys.excepthook = global_exception_handler

可能报异常的代码块

import global_exception

if __name__ == '__main__':
print('program start')
raise KeyError('')

可以看到不用添加丑陋的通用Exception快,也能把未知的异常写入log文件啦。

Comments:

captcha