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

Python交互式会话中如何查询指定异常所属的定义模块

在Python交互式会话中查询异常所属模块的通用方法

以下两种方案都可以直接在Python shell中执行,无需依赖外部文档或浏览器:

  • 方法1:捕获异常后直接查询类的__module__属性
    这是兼容性最高的通用方案,所有Python异常类默认都自带__module__属性,会直接返回该类定义所在的模块路径。
    操作代码示例:
import uuid
# 替换为你自己的模块导入逻辑
from yourapp import models

try:
    # 替换为触发异常的对应代码
    models.Selection.objects.get(pk=uuid.uuid4())
except Exception as e:
    # 输出异常所属模块
    print("异常所在模块:", e.__class__.__module__)
    # 输出异常的全限定名,可直接用于导入或引用
    print("异常全限定名:", f"{e.__class__.__module__}.{e.__class__.__name__}")

针对你给出的Django场景,运行上述代码后拿到的DoesNotExist异常所属模块就是你定义Selection模型的模块路径,你可以直接用models.Selection.DoesNotExist的形式引用该异常做捕获,无需额外导入其他模块。如果你需要捕获通用的对象不存在异常,可以打印e.__class__.__mro__查看异常的继承链,上层通用父异常ObjectDoesNotExist所属模块为django.core.exceptions。

  • 方法2:无需重复执行代码,直接读取最近抛出的异常
    如果已经触发过异常、不想重复运行代码,可以直接调用Python内置的sys.last_type获取最近一次抛出的异常类:
import sys
print("异常所在模块:", sys.last_type.__module__)
print("异常全限定名:", f"{sys.last_type.__module__}.{sys.last_type.__name__}")

该方法在默认Python shell、IPython环境中都可以正常使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 06:06:00