尝试创建自定义异常并扩展 Exception 类,这会导致错误
错误:此编译单元中已定义异常
如果去掉 import 语句 --> import java.lang.Exception
然后下面出现一组新的错误
--------------------配置:--------------------
E:\ArjunJava\Exception.java:29: 错误:不兼容的类型:MyException 无法转换为 Throwable
throw new MyException("Array size is less than what you are referencing");
^
E:\ArjunJava\Exception.java:35: 错误:不兼容的类型:MyException 无法转换为 Throwable
catch(MyException me)
^
E:\ArjunJava\Exception.java:37: 错误:找不到符号
System.out.println("Exception caught "+me.getMessage());
symbol: method getMessage() location: variable me of type MyException
E:\ArjunJava\Exception.java:15: 错误:Exception 类中的构造函数 Exception 无法应用于给定类型;
super(message);
^
required: no arguments
found: String
reason: actual and formal argument lists differ in length
4 个错误
流程已完成。
import java.lang.Exception;
class MyException extends Exception {
MyException(String message) {
super(message);
}
}
public class Exception {
public static void main (String[] args) {
// array of size 4.
int[] arr = new int[4];//Referring 5th Element
try {
int i = arr[4]; // this statement causes an exception
throw new MyException("Referring to element more than Array size");
}
catch(MyException me) {
System.out.println("Exception caught : "+me.getMessage());
}
}
}
输出:
捕获异常:引用超过数组大小的元素
最佳答案
代码的问题在于您在类 Exception
中定义了 main()
,该类已被 Java 使用并默认导入。将类的名称从 Exception 更改为其他名称,您的代码应该可以正常工作。解决问题的另一种方法是,如果您不想更改类的名称,则可以使用 Exception
的完全限定名称,如下所示:
class MyException extends java.lang.Exception {
}
同样,您不需要显式地拥有导入语句
关于java - 异常已在此编译单元中定义 import java.lang.Exception;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54565937/