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