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

自定义异常中None类型判断失效问题排查求助

Django自定义异常无法进入None判断分支的排查方案

先检查自定义异常类的实现

确保你的CustomException正确将excep参数绑定到实例属性,否则后续判断根本取不到正确的值:

class CustomException(Exception):
    def __init__(self, excep=None):
        # 必须把参数赋值给实例属性,后续捕获才能访问
        self.excep = excep
        # 可选:调用父类初始化,让异常信息更清晰
        super().__init__(f"自定义异常,关联异常:{excep}")

排查传入的excep参数实际值

你调用时用的是raise CustomException(excep=e),先确认e到底是不是None——很多时候问题出在这里,你以为e是None,但实际上游逻辑返回的e是其他值。

在调用前加打印语句验证:

# 调用raise前先打印e的具体信息
print(f"传入CustomException的e值:{e},类型:{type(e)}")
raise CustomException(excep=e)

修正异常捕获时的判断逻辑

捕获异常后,确保你访问的是实例的excep属性,并且用is None做判断(比== None更严谨):

try:
    # 业务代码或调用raise的逻辑
except CustomException as exc:
    print(f"捕获到的excep值:{exc.excep},类型:{type(exc.excep)}")
    if exc.excep is None:
        # 这里是你要进入的None分支逻辑
        print("进入None分支")
    else:
        # 非None分支逻辑
        print("进入非None分支")

额外检查:类名拼写

注意你写的CustomExcpetion是拼写错误(少了一个t,正确是CustomException),如果类名拼写不一致,可能导致意外问题,先确认类名统一。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 12:32:41