为什么 catch 块会产生编译器错误?
Why does the catch block produce a compiler error?
我有以下人为设计的代码:
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 块重新抛出被捕获的异常。然而,编译器说需要 "Incompatible Types" 和 "Throwable"。为什么会产生这个错误?
只需将您的 class 名称从 Exception to Exception1.
更改
看起来像是名称冲突问题。
您的命名约定策略反对 Java 标识符定义规则。
意思是,你不能给出图书馆已经给出的名字。在这里,class 姓名。
当函数可以抛出异常时,您需要在函数头中声明。
见https://docs.oracle.com/javase/tutorial/essential/exceptions/declaring.html
您的 Exception
class 正在隐藏 java.lang.Exception
并且您正试图将自己的 class 作为异常抛出。您应该抛出一个扩展 java.lang.Exception class.
的对象
只需将 Exception 更改为 java.lang.Exception
catch(java.lang.Exception ae)
或者更改隐藏 java.lang.Exception
的 class 的名称
试试这个
将您的 class 名称从 Exception 更改为另一个用户定义的名称。
这是名称冲突问题,因为 Exception 是内置的
class in java 所以你不能在你的源代码中给出相同的名字。
就像在java中不能使用关键字作为标识符一样。
Exception 不是关键字,但它已经用作 class 标识符。
我有以下人为设计的代码:
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 块重新抛出被捕获的异常。然而,编译器说需要 "Incompatible Types" 和 "Throwable"。为什么会产生这个错误?
只需将您的 class 名称从 Exception to Exception1.
看起来像是名称冲突问题。
您的命名约定策略反对 Java 标识符定义规则。
意思是,你不能给出图书馆已经给出的名字。在这里,class 姓名。
当函数可以抛出异常时,您需要在函数头中声明。
见https://docs.oracle.com/javase/tutorial/essential/exceptions/declaring.html
您的 Exception
class 正在隐藏 java.lang.Exception
并且您正试图将自己的 class 作为异常抛出。您应该抛出一个扩展 java.lang.Exception class.
只需将 Exception 更改为 java.lang.Exception
catch(java.lang.Exception ae)
或者更改隐藏 java.lang.Exception
试试这个
将您的 class 名称从 Exception 更改为另一个用户定义的名称。
这是名称冲突问题,因为 Exception 是内置的
class in java 所以你不能在你的源代码中给出相同的名字。
就像在java中不能使用关键字作为标识符一样。 Exception 不是关键字,但它已经用作 class 标识符。