自定义异常中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
相关产品推荐
相关产品推荐

