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

如何捕获导入自定义模块中抛出的异常?

自定义模块异常在主文件捕获的可行性及修正方案

完全可行,Python支持在主文件中捕获自定义模块内抛出的异常,你当前代码未成功捕获的问题出在两处逻辑错误:

问题分析

  • 你在main.py里只是实例化了My_Error类,但没有用raise关键字抛出这个异常;
  • 模块内的Fail_Func抛出的是通用Exception,而非自定义的My_Error,且你根本没调用这个会触发异常的函数。

修正后的代码示例

exceptionStuff.py

class My_Error(Exception):
    pass

def Fail_Func():
    # 抛出自定义异常,而非通用Exception
    raise My_Error("自定义异常触发")

main.py

from myModules.exceptionStuff import My_Error, Fail_Func

try:
    # 调用模块内会抛出异常的函数
    Fail_Func()
except My_Error as e:
    print(f'捕获到自定义异常: {e}')
# 如需捕获其他通用异常,可追加except块
except Exception as e:
    print(f'捕获到通用异常: {e}')

关键说明

  • 只有当模块内的函数/代码通过raise抛出异常,且主文件调用了这段代码时,异常才会传递到主文件的try-except块中;
  • 建议明确捕获特定异常(如My_Error),避免使用空except,防止意外捕获其他无关异常(比如KeyboardInterrupt这类系统级异常);
  • 单纯实例化异常类(如My_Error())不会触发异常流程,必须搭配raise关键字。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 18:45:42