如何在同一类中创建n个异常



好吧,这是我的问题。

我想创建自己的自定义异常,例如"UsernameAlreadyTakeException"。我可以在一个扩展Exception的文件中创建一个类。我的问题是,我不希望每个"子类"有3-5个不同的文件,它们几乎什么都不做。我想把它们都放在同一个文件里。这可能吗?如果可能,怎么做??

您可以通过创建一个静态子类来实现这一点(尽管我不一定推荐它)。这里有一个例子:

package com.sandbox;
public class Sandbox {
    public static void main(String[] args) throws Exception2 {
        throw new Exception2();
    }
    public static class Exception1 extends Exception {
    }
    public static class Exception2 extends Exception {
    }
    public static class Exception3 extends Exception {
    }

}

编译Java时,禁止在同一文件中放置多个类的唯一限制是,文件中只有一个顶级类可以标记为public。这是因为public类必须在一个同名文件中,并且不能有多个同名类。

这通常被认为是一种糟糕的做法,并且它不能保证您的类具有正确的保护级别,但在声明额外的类时,您可以忽略public。这将为他们提供default保护。

有关默认保护的含义(以及其他保护级别)的详细讨论,请参阅此问题。

因此,您可以创建文件UsernameAlreadyTakenException.java,并在其中放入以下内容:

public class UsernameAlreadyTakenException extends Exception {
    ...
}
class MySecondException extends Exception {
    ...
}
...
class MyNthException extends Exception {
    ...
}

您甚至可以将文件命名为其他名称,但不能将类UsernameAlreadyTakenException标记为public。但再一次,这样做是令人不快的。通常最好为每个不同的类都有一个新文件。

最新更新