作为公共类与公共静态内部类的异常

我有两个选项(据我所知,它们在技术上是相同的)来声明仅从特定类引发的自定义异常类:com.XXX.Foo

  • 作为包中的公共类:com.XXX.CustomException
  • 作为公共静态内部类:com.XXX.Foo.CustomException

哪个选项更好?


答案 1

如果异常非常特定于类,我不介意将其保留为嵌套类。每当需要提取它的时候,只需将其提取出来即可。Foopublic

但是,在一般实践中,我从未见过为 Exception 定义的任何嵌套类。我也不知道Java API中是否存在一个。


答案 2

在我10多年的Java经验中,我不记得遇到过一个API,其中公共异常类被定义为静态内部类。我无法给你一个具体的理由,为什么这样做会是一个坏主意,但它肯定会让你的代码变得不同寻常

为什么你认为有必要这样做,因为(显然)没有其他人这样做?我希望你不只是为了“创新”。

(顺便说一句,我知道一些众所周知的Java API使用公共静态内部类和接口来做其他事情。我在这里专门讨论异常类的情况。


推荐