除了Exception
之外,继承系统异常是不错的做法,如果有意义的话?例如,如果我的自定义异常是特定类型的“无效操作”,继承System.InvalidOperationException
是否明智?
我问的原因是我有许多类使用相同的消息抛出InvalidOperationException
。我正在考虑用自定义异常替换它们,该异常可以定义自己的默认消息。如果要继承InvalidOperationException
,我就不必重构catch
处理程序。
答案 0 :(得分:2)
不,简短&这样做的简单原因是因为InvalidOperationException
来自SystemException,根据文档
在System命名空间中定义预定义异常的基类。
从Exception派生出来是最佳做法。
只是为了澄清 - 从InvalidOperationException
(至少我知道)派生出来并没有错。但是,如InvalidOperationException
这样的现成例外情况可能会导致您承担额外的行李,而这些行李可能不需要。我认为你需要提出的真正问题是
“从InvalidOperationException
Exception
获得{<1}}
从我个人的经验来看,我从来没有真正从Exception
以外的其他任何事情中获得。
答案 1 :(得分:-1)
由于InvalidOperationexception
派生自System.Exception
,您可以从中扩展并添加自己的Message()
方法(C#的多重继承版本)。当然,你仍然需要更新你的抛出代码抛出你的新例外。但是,不应该触及已经捕获InvalidOperationexception
的所有地方。