如果有意义的话,除了Exception
之外继承系统例外是好的做法吗?例如,如果我的自定义异常是特定类型的"无效操作",继承System.InvalidOperationException
是否明智?
我问我的原因有很多类InvalidOperationException
相同的消息。我正在考虑用可以定义自己的默认消息的自定义异常替换这些异常。如果要继承InvalidOperationException
我就不必重构catch
处理程序。
不,简短而简单的原因是InvalidOperationException
源自SystemException,根据文档
定义 System 命名空间中预定义异常的基类。
从异常派生被认为是最佳做法。
只是为了澄清 - 从InvalidOperationException
派生并没有错(至少我知道)。但是,从现成的例外情况(如InvalidOperationException
)衍生出来可能会导致您携带可能不需要的额外行李。我认为你需要问的真正问题是
"我从InvalidOperationException
中得到的究竟会得到什么Exception
"
我的个人经验来看,除了Exception
之外,我从来没有真正从其他任何东西中获得过。
由于InvalidOperationexception
派生自System.Exception
,你可以从中扩展并添加自己的Message()
方法(C#版本的多继承)。当然,您仍然需要更新抛出新异常的抛出代码。但是,已经抓住InvalidOperationexception
的任何地方都不应该被触摸。