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

标签 c# exception custom-exceptions

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

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

最佳答案

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

Defines the base class for predefined exceptions in the System namespace.

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


澄清一下 - 从 InvalidOperationException 派生没有任何问题(至少我知道)。但是,从 InvalidOperationException 等现成异常派生可能会导致您承担可能不需要的额外负担。我认为您真正需要问的问题是

“我将从 InvalidOperationException 派生到 Exception 中得到什么?”

根据我的个人经验,除了 Exception 之外,我从来没有真正需要从任何东西中派生。

关于c# - 继承 System.Exception 之外的内置异常类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18962833/

相关文章:

java - 强制重写类时调用基类版本方法,否则抛出异常

C++ 指示类函数抛出自定义异常

c# - _ = WriteItems(channel.Writer, count, delay); 中下划线的含义是什么?

c# - Entity Framework : where field starts with number

c# - 如何在 Linux 或 Mac OS 上运行 Windows 服务

android - 当应用程序崩溃时,Android 是否维护任何异常信息?

javascript - 如何使用 bokeh 库(Python + JavaScript)管理错误并将其显示在用户界面上?

c# - OpenXML 将段落样式(Heading1、Heading2、Head 3 等)添加到文字处理文档

java - 在输入不匹配错误期间从异常获取 "null"作为消息

c++ - 哪种数据类型不能在 C++ 程序中作为异常抛出