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

时间:2013-09-23 15:12:05

标签: c# exception custom-exceptions

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

我问的原因是我有许多类使用相同的消息抛出InvalidOperationException。我正在考虑用自定义异常替换它们,该异常可以定义自己的默认消息。如果要继承InvalidOperationException,我就不必重构catch处理程序。

2 个答案:

答案 0 :(得分:2)

不,简短&这样做的简单原因是因为InvalidOperationException来自SystemException,根据文档

  

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

Exception派生出来是最佳做法。


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

“从InvalidOperationException Exception获得{<1}}

后,我将获得什么?

从我个人的经验来看,我从来没有真正从Exception以外的其他任何事情中获得。

答案 1 :(得分:-1)

由于InvalidOperationexception派生自System.Exception,您可以从中扩展并添加自己的Message()方法(C#的多重继承版本)。当然,你仍然需要更新你的抛出代码抛出你的新例外。但是,不应该触及已经捕获InvalidOperationexception的所有地方。