Java:异常引发类?

2022-09-03 08:40:10

我有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);
    }
}

答案 1

该关键字不能在类级别应用,只能在方法级别应用。throws


答案 2

类初始值设定项(“静态块”)终止并出现选中异常是编译时错误。

如果类初始值设定项引发未经检查的异常,则第一次初始化该类的尝试将引发 .任何后续尝试使用该类都将导致 .如果确实要使用异常,请在初始值设定项中抛出类似 a 的内容。ExceptionInInitializeErrorNoClassDefFoundErrorRuntimeException

但是,问题中显示的方法(在正确初始化类时设置标志)实际上对于许多应用程序来说可能是更好的方法。更具体地说,我想说的是,除非您希望整个程序在初始化失败时终止,否则请使用标志。只需从类声明中删除“throws”子句,因为这不是合法的语法。