我有以下设计代码:
class Exception
{
public static void main(String args[])
{
int x = 10;
int y = 0;
int result;
try{
result = x / y;
}
catch(ArithmeticException e){
System.out.println("Throwing the exception");
throw new ArithmeticException();
}
catch(Exception ae){
System.out.println("Caught the rethrown exception");
}
}
}
第一个catch块重新抛出捕获的异常。然而,编译器说"不兼容的类型"和" Throwable"需要。为什么会产生这个错误?
答案 0 :(得分:10)
只需更改Exception to Exception1.
看起来名称冲突问题。
您的命名约定策略是反对Java标识符定义规则。
意思是,你不能给出已经由图书馆提供的名字。这里,班级名称。
答案 1 :(得分:3)
您的Exception
类隐藏java.lang.Exception
并且您正在尝试将自己的类作为异常抛出。你应该抛出一个扩展java.lang.Exception类的对象。
只需使用java.lang.Exception
更改Exceptioncatch(java.lang.Exception ae)
或者更改隐藏java.lang.Exception
答案 2 :(得分:0)
试试这个
将您的班级名称从“例外”更改为另一个用户定义名称。
这是名称冲突的问题,因为Exception是内置的
java中的类,因此您不能在源代码中使用相同的名称。
就像你不能在java中使用关键字作为标识符一样。 异常不是关键字,但它已经用作类标识符。
答案 3 :(得分:-1)
当一个函数可以抛出异常时,你需要在函数头中声明它。
请参阅https://docs.oracle.com/javase/tutorial/essential/exceptions/declaring.html