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

如何断言异常类的属性值?是否需为每种异常单独建类?

异常验证与设计方案建议

用assertRaises上下文管理器捕获异常验证属性

Python的unittest里的assertRaises支持作为上下文管理器使用,能直接获取抛出的异常实例,完美解决你要验证type属性的需求,比手动try-catch更规范简洁。

示例代码:

def test_missing_name_field():
    with self.assertRaises(ContentNotFoundException) as context_manager:
        # 执行会触发缺失name的业务逻辑
        process_user_data({"age": 30, "sex": "male"})
    
    raised_exception = context_manager.exception
    self.assertEqual(raised_exception.type, "name")

这种写法既符合单元测试的标准范式,又能精准验证异常的属性值,完全替代怪异的try-catch写法。

是否要拆分细分异常类?

要不要拆成NameNotFoundException、AgeNotFoundException这类专属异常,看业务场景:

  • 如果不同内容缺失对应的处理逻辑差异很大(比如不同的错误码、不同的前端提示、不同的补偿流程),那拆分是合理的,能让代码语义更清晰,后续维护扩展更方便。
  • 如果所有内容缺失的处理逻辑完全一致,只是需要标记缺失类型,那单异常类加type属性就足够,没必要过度拆分导致类数量冗余。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 11:45:36