java - 我已经捕获了声明并捕获了异常,但仍然存在错误

标签 java exception

class HelloWorld extends Exception {
    HelloWorld(String s) {
        System.out.println("helllo" + s);
    }
}

class myclass {
    void go() throws HelloWorld {
        System.out.println("my mom");
    }
}

public class ting {
    public static void main(String[] args) {
        try {
            myclass h= new myclass();
            h.go();
        } catch(HelloWorld e) {
            throw new HelloWorld("world");
        }
    }
}

我读到,我们总是需要声明一个异常,直到我们捕获它。如上所述,我使用自定义异常 HelloWorld ,当我在其他类(即 myclass)中抛出此异常时,我在 main 方法中捕获了此异常。为什么它不起作用?

o/p : ting.java:17: error: unreported exception HelloWorld; must be caught or declared to be thrown
         throw new HelloWorld("world");
         ^
1 error 

最佳答案

由于某种原因,您从 catch block 中抛出异常

解决方案:

  • 声明您的main抛出HelloWorld:

    public static void main(String[] args) 抛出 HelloWorld

  • 再次用try-catch包围它,但这会很奇怪:

<小时/>
catch(HelloWorld e){
   try {
       throw new HelloWorld("world");
       } catch (HelloWorld e1) { }
   }
}

注意:您最好为您的异常命名HelloWorldExcption

关于java - 我已经捕获了声明并捕获了异常,但仍然存在错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21554323/

相关文章:

java - Singleton Util 类的替代方案

scala - 如何测试在 Scala 中映射内部抛出的异常

c++ - 返回 null 还是抛出异常?

java - WildFly 独立版无法运行

java - Java 中的 "static{}"是什么?

c# - 无法访问 Azure keyvault 值

c++ - 演示代码抛出 out_of_range 异常,但我不知道为什么

java - 几个 "ChildException"捕获 block 与一个 "Exception"捕获 block

java - float 范围怎么这么大,有 4 个字节 (±3.40282347E+38)

java - 为什么WEB-INF文件夹内的jsp文件可以工作,而放在WEB-INF下的文件夹下却不能呢?