Java:异常抛出类?

新手上路,请多包涵

我有 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 许可协议

阅读 349
2 个回答

类初始值设定项(“静态块”)以检查异常终止是编译时错误。

如果类初始值设定项抛出 未经检查 的异常,则首次尝试初始化该类将引发 ExceptionInInitializeError 。任何后续使用该类的尝试都将导致 NoClassDefFoundError 。如果你真的想使用异常,在初始化器中抛出类似 RuntimeException 的东西。

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

原文由 erickson 发布,翻译遵循 CC BY-SA 2.5 许可协议

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

原文由 fastcodejava 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题