You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中不使用try-except如何在触发异常时自动运行指定函数

实现方案

你可以通过重写Python的全局未捕获异常钩子sys.excepthook实现需求,不需要用到try/except关键字,该钩子会在程序出现未被捕获的顶层异常时自动被解释器调用。

示例代码

import sys

def onError():
    print("There was an error")

# 自定义异常处理钩子,接收固定三个参数:异常类型、异常实例、回溯对象
def custom_exception_handler(exc_type, exc_val, exc_tb):
    # 先执行你定义的错误处理函数
    onError()
    # 可选:保留系统默认的异常栈打印逻辑,不需要可以删除下一行
    sys.__excepthook__(exc_type, exc_val, exc_tb)

# 替换系统默认的异常钩子
sys.excepthook = custom_exception_handler

# 测试触发异常
raise NameError

说明

  • 该方法仅对未被捕获的异常生效,如果你代码其他位置已经通过try/except捕获了对应异常,钩子不会被触发。
  • 如果需要处理多线程场景下的未捕获异常,可以额外重写threading.excepthook,用法和sys.excepthook一致。

内容的提问来源于stack exchange,提问作者BaguetteYeeter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 02:30:01