如何在静态方法中抛出异常,两者都在同一个类中

cja*_*cja 0 java oop

Example1Exception和Example1Method属于同一个文件.将它们放在单独的文件中是没有意义的.

public class Example1
{
    public class Example1Exception extends Exception
    {
        public Example1Exception(String message)
        {
            super(message);
        }
    }

    public static void Example1Method() throws Example1Exception
    {
        throw new Example1Exception("hello"); //error: non-static variable this cannot be referenced from a static context
    }
}
Run Code Online (Sandbox Code Playgroud)

如何在Example1Method中抛出Example1Exception?

Jon*_*eet 11

(假设你实际上声明了Example1Exception使用类声明......,并且方法声明也是固定的......)

Example1Exception是一个内部类 - 它需要引用外部类的封闭实例.

选项:

  • 提供参考(但为什么?)
  • 通过将声明更改为include,使其成为嵌套(但非内部)类static
  • 使它成为顶级课程

就个人而言,我通常会选择最后一个选项 - 为什么你想让它成为一个嵌套的类呢?为什么将它们放在单独的文件中没有意义?除了一堆复杂性之外,将它作为嵌套类获得了什么?你真的想要人们申报吗?catch (Example1.Example1Exception ex) { ... }

如果你真的希望它是嵌套的,你可能只是希望它是一个非内部类 - 你没有使用对一个实例的隐式必需引用Example1.