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

自定义异常类是否应当派生自System.ApplicationException?

自定义异常类是否应当派生自System.ApplicationException?

不推荐自定义异常派生自System.ApplicationException,直接继承System.Exception类是.NET官方目前建议的最佳实践

原因说明

ApplicationException的设计初衷是区分系统级异常和应用自定义异常,但该设计已经被.NET官方弃用,不推荐继续使用。
具体原因如下:

  • 该类的定位本身存在设计缺陷,实际开发中几乎没有需要统一捕获所有应用级异常的场景,大多时候都是捕获具体的自定义异常类型做针对性处理,继承ApplicationException没有实际价值
  • 部分.NET 框架内置的异常同样继承自ApplicationException,完全破坏了「仅用户自定义应用异常才继承该类」的设计约定,导致该类的区分作用完全失效
  • 微软官方文档的自定义异常示例已全部改为直接继承Exception类,该实践已经成为.NET生态的通用标准

自定义异常正确实现示例

[Serializable]
public class CustomBusinessException : Exception
{
    // 保留默认的四个构造函数即可覆盖绝大多数使用场景
    public CustomBusinessException() { }

    public CustomBusinessException(string message) 
        : base(message) { }

    public CustomBusinessException(string message, Exception innerException) 
        : base(message, innerException) { }

    protected CustomBusinessException(
        System.Runtime.Serialization.SerializationInfo info,
        System.Runtime.Serialization.StreamingContext context) 
        : base(info, context) { }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 08:24:04