Java 编译错误:未报告的异常添加;必须被抓住或宣布被抛出
我想创建添加用户定义的异常,但出现编译错误Java 编译错误:未报告的异常添加;必须被抓住或宣布被抛出,java,exception,throw,Java,Exception,Throw,我想创建添加用户定义的异常,但出现编译错误 class Test{ public static void main(String[] args){ int a=9, b=67, result; result = a+b; throw new Add("Addition has been performed"); } } class Add extends Throwable{ Add(){ printSt
class Test{
public static void main(String[] args){
int a=9, b=67, result;
result = a+b;
throw new Add("Addition has been performed");
}
}
class Add extends Throwable{
Add(){
printStackTrace();
}
Add(String message){
System.out.println(message);
printStackTrace();
}
}
错误是:
Practice.java:8: error: unreported exception Add; must be caught or declared to be thrown
throw new Add("Addition has been performed");
若要取消选中异常,请按以下方式声明它
class Add extends RuntimeException {
}
捕获/重新播放
Add
throwable
或者从RuntimeException
扩展它-它们不是必须捕获的
类添加扩展运行时异常
如果不想取消选中异常,则需要声明方法可能引发此异常
public static void main(String[] args) throws Add {
或者用try/catch语句包围它
try {
throw new Add("Addition has been performed");
} catch (Add add) {
add.printStackTrace();
}
总的来说,我建议您使用IDE,因为他们非常擅长帮助您解决此类问题
您已成功创建并引发异常,但请使用Try和
抓住挡块来处理它
我要指出的是,不管编译错误和可能的修复,扩展
Throwable
都不是一个好主意
- 这是不必要的。您可以/应该扩展
或Exception
或其任何子类RuntimeException
- 有很多代码假定所有异常都是
或异常
或其子类型,而不是错误
可丢弃的一些“随机”子类型
的随机子类的一般含义不清楚;e、 g.见Throwable
对于异常的构造函数来说,打印或记录错误消息和堆栈跟踪也是个坏主意。捕获异常的代码应该决定如何处理它们。首先,在Java中有两种类型的异常。检查和取消检查。选中的是抛出的异常,您必须通过捕获它们(围绕块、代码部分、包含将抛出类似于您的异常的方法)或声明调用此方法的父方法抛出异常来处理这些异常 Throwable是Java中所有错误的基类。有多种类型的错误,其中一个子类型是异常
同样重要的是,您似乎在成功时抛出了一个异常,这不是最好的做法,因为异常在资源方面代价高昂。在这种情况下,最好使用事件来广播所发生的添加。这两个类在同一个文件中?请阅读有关检查和未检查的异常的内容。是的,它们在同一个文件中。“有很多代码假定…”当然,您知道它们所说的“假定”…是的。而这个代码是错误的。但还是。。。这是个问题。