我应该在类中包装类自定义异常吗

本文关键字:自定义异常 包装类 我应该 | 更新日期: 2023-09-27 18:20:33

如果我有一个只与一个类相关的异常,那么哪种样式是最好的?

当我在课堂上这样包装它时:

class Class {
  //some stuff
  throw MyException();
  class MyException : Exception
  {
    //some stuff
  }
}

或者把它放在类之外

class Class {
  //some stuff
  throw MyException();
}
class MyException : Exception
  {
    //some stuff
  }

使用其中一种或另一种解决方案有任何进展吗?这有什么编码标准吗?

我应该在类中包装类自定义异常吗

哪种款式最好?

这是一个设计问题(更进一步)。

这有什么编码标准吗?

《C#编程-考试参考70-483》一书说

最好使用.NET Framework中定义的异常[除非有]开发人员使用您的代码[他们]知道这些异常,并且可以以比框架异常更具体的方式处理它们

问问自己,是否没有任何其他异常可以代表您想要代表的异常,以及需要哪些数据来提取有关异常发生情况的信息。

使用其中一种或另一种解决方案有任何进展吗?

第一个设计说,类将像处理代理一样处理异常,外部代码不知道发生了什么,但可能只知道不同的输出,这取决于是否抛出异常。只有类、它的子类(受保护)和它的"simblings"(内部)可以与它一起工作

第二种说法是,世界将能够理解出了什么问题,并对此采取行动;其他类将更改自己的流来处理错误。