Java:异常抛出类?

hhh*_*hhh 13 java error-handling exception class

我有课程DirReader和搜索.搜索使用DirReader.我希望搜索知道DirReader何时抛出异常.那我怎么能让课程抛出异常呢?

目前,我使用initCorrect -dummy var.异常风格的方法可能更合适.

简化示例错误

$ javac ExceptionStatic.java 
ExceptionStatic.java:4: '{' expected
public class ExceptionStatic throws Exception{
                            ^
1 error
Run Code Online (Sandbox Code Playgroud)

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

fas*_*ava 31

throws关键字不能在类级仅在方法级别施加.

  • 谢谢!没有人提到这一点. (2认同)

eri*_*son 5

类初始化程序(“静态块”)因检查到的异常而终止是编译时错误。

如果类初始化程序引发未经检查的异常,则首次尝试初始化类将引发ExceptionInInitializeError。随后使用该类的任何尝试都会导致NoClassDefFoundError。如果您确实要使用异常,请RuntimeException在初始化程序中抛出类似a 的内容。

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