4

Exception如果有意义的话,继承系统异常是否是一种好习惯?例如System.InvalidOperationException,如果我的自定义异常是特定类型的“无效操作”,继承是否明智?

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

4

2 回答 2

4

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

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

Exception派生被认为是最佳实践。


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

“我将从InvalidOperationExceptionover中得到什么? Exception

根据我的个人经验,我从来没有真正需要从Exception.

于 2013-09-23T15:14:48.683 回答
-1

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

于 2013-09-23T15:22:30.370 回答