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
}
}
如何在Example1Method中抛出Example1Exception?
最佳答案
(假设您实际上使用类声明声明了Example1Exception
,并且方法声明也已修复...)Example1Exception
是一个内部类-它需要对外部类的封闭实例的引用。
选项:
提供参考(但是为什么?)
通过将声明更改为包含static
,使其成为嵌套(但非内部)类
成为顶级课程
就我个人而言,我通常会选择最后一个选项-为什么您仍要使其成为嵌套类?为什么将它们放在单独的文件中没有意义?通过将其作为嵌套类,除了带来一堆复杂性之外,您还能获得什么?您是否真的要人们声明catch (Example1.Example1Exception ex) { ... }
如果您确实希望将其嵌套,则可能只希望它是一个非内部类-您未在使用对Example1
实例的隐式必需引用。