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

如何在抛出自定义异常时隐藏其完整模块路径?

修改自定义异常的显示模块路径

要让自定义异常显示为foo.CustomException而非完整模块路径,最直接的方法是修改异常类的__module__属性,将其设置为包名'foo'。

单个异常类的实现

在你的CustomException类中添加__module__属性:

# foo/module/submodule/exceptions.py
class CustomException(Exception):
    __module__ = 'foo'
    # 原有的类实现...

这样抛出异常时,错误信息就会显示为:

Traceback (most recent call last):
...
foo.CustomException: hello

多个异常类的批量处理

如果有多个自定义异常,建议先定义一个基类,统一设置__module__,其他异常继承该基类即可:

# foo/module/submodule/exceptions.py
class FooBaseException(Exception):
    __module__ = 'foo'

class CustomException(FooBaseException):
    ...

class AnotherCustomException(FooBaseException):
    ...

原理说明

Python在格式化异常信息时,会使用异常类的__module__属性值拼接类名。默认情况下__module__是类定义所在的完整模块路径,手动将其指定为包名后,就会替换掉原来的长模块路径,只保留包名作为前缀。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 10:42:36