我有 DirReader 和 Search 课程。搜索使用 DirReader。我希望搜索知道 DirReader 何时抛出异常。那么我怎样才能让类抛出异常呢?
目前,我使用 initCorrect -dummy var。异常式方法可能更合适。
简化示例错误
$ javac ExceptionStatic.java
ExceptionStatic.java:4: '{' expected
public class ExceptionStatic throws Exception{
^
1 error
代码
import java.util.*;
import java.io.*;
// THIS PART NEEDS TO BE FIXED:
public class ExceptionStatic throws Exception{
private static boolean initCorrect = false;
public static String hello;
static{
try{
hello = "hallo";
//some other conditionals in real code
if( true) throw new Exception();
initCorrect=true;
}catch(Exception e){
e.printStackTrace();
}
}
public static void main(String[] args){
if(initCorrect)
System.out.println(hello);
}
}
原文由 hhh 发布,翻译遵循 CC BY-SA 4.0 许可协议
类初始值设定项(“静态块”)以检查异常终止是编译时错误。
如果类初始值设定项抛出 未经检查 的异常,则首次尝试初始化该类将引发
ExceptionInInitializeError
。任何后续使用该类的尝试都将导致NoClassDefFoundError
。如果你真的想使用异常,在初始化器中抛出类似RuntimeException
的东西。然而,问题中显示的方法——在正确初始化类时设置一个标志——实际上对于许多应用程序来说可能是更好的方法。更具体地说,除非您希望整个程序在初始化失败时终止,否则请使用标志。只需从类声明中删除“throws”子句,因为那不是合法的语法。