Exception
sys.excepthook
sys.excepthook 是Python中的一个全局函数,它在脚本遇到未捕获的异常时被调用。 默认情况下,当一个异常没有被任何 try-except 块捕获时,Python会调用 sys.excepthook,打印出异常信息以及堆栈跟踪。
- 允许在程序的任何地方捕获未被处理的异常;使用起来相对简单。
-
不能阻止程序因未处理的异常而终止;只能用于处理未被 try-except 块捕获的异常。
import sys def test_func4(): temp = 1 / 0 return temp def test_func5(): test_func4() def custom_excepthook(ttype, tvalue, ttraceback): print("Process exception by sys.excepthook") # print(f'ttype:{ttype}, tvalue:{tvalue}') # index = 1 # while ttraceback: # print(f"call stack: at index:{index}") # traceback_code = ttraceback.tb_frame.f_code # print(f" file_name: {traceback_code.co_filename}") # print(f" func/module_name: {traceback_code.co_name}") # ttraceback = ttraceback.tb_next # index += 1 if __name__ == '__main__': sys.excepthook = custom_excepthook test_func5() try: test_func5() except Exception: print("Catch exception by try")
example
try:
a = float("3.15a")
print(a)
except Exception as ex:
print(f"Unexpected {ex=}, {type(ex)=}")