继承除 System.Exception 之外的内置异常类

本文关键字:内置 异常 System Exception 继承 | 更新日期: 2023-09-27 18:32:22

如果有意义的话,除了Exception之外继承系统例外是好的做法吗?例如,如果我的自定义异常是特定类型的"无效操作",继承System.InvalidOperationException是否明智?

我问我的原因有很多类InvalidOperationException相同的消息。我正在考虑用可以定义自己的默认消息的自定义异常替换这些异常。如果要继承InvalidOperationException我就不必重构catch处理程序。

继承除 System.Exception 之外的内置异常类

不,简短而简单的原因是InvalidOperationException源自SystemException,根据文档

定义 System 命名空间中预定义异常的基类。

从异常派生被认为是最佳做法。


只是为了澄清 - 从InvalidOperationException派生并没有错(至少我知道)。但是,从现成的例外情况(如InvalidOperationException)衍生出来可能会导致您携带可能不需要的额外行李。我认为你需要问的真正问题是

"我从InvalidOperationException中得到的究竟会得到什么Exception"

我的个人经验来看,除了Exception之外,我从来没有真正从其他任何东西中获得过。

由于InvalidOperationexception派生自System.Exception,你可以从中扩展并添加自己的Message()方法(C#版本的多继承)。当然,您仍然需要更新抛出新异常的抛出代码。但是,已经抓住InvalidOperationexception的任何地方都不应该被触摸。