Python异常处理
重定向异常
import sys
def my_exception_hook(exc_type, exc_value, exc_tb):
sys.__excepthook__(exc_type, exc_value, exc_tb)
if __name__ == '__main__':
sys.excepthook = my_exception_hook
print(1/0)
sys.excepthook(exctype, value, traceback)为python内置异常处理方法
调用sys.exc_info()可以获得元组(exc_type, exc_value, exc_tb)
traceback模仿堆栈跟踪
import sys
import traceback
def my_exception_hook(exc_type, exc_value, exc_tb):
traceback.print_exception(exc_type, exc_value, exc_tb)
sys.__excepthook__(exc_type, exc_value, exc_tb)
if __name__ == '__main__':
sys.excepthook = my_exception_hook
print(1/0)
模块traceback提供一个标准接口,用于提取,格式和打印Python程序的堆栈痕迹,模仿了Python解释器在打印堆栈跟踪时的行为
对异常直接进行调试
import sys
import pdb
def my_exception_hook(exc_type, exc_value, exc_tb):
sys.__excepthook__(exc_type, exc_value, exc_tb)
pdb.pm()
if __name__ == '__main__':
sys.excepthook = my_exception_hook
print(1/0)
pdb是python自带的调试模块