java - 异常已在此编译单元中定义 import java.lang.Exception;

标签 java

尝试创建自定义异常并扩展 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/

相关文章:

java - 重写等于和哈希码?

java - 使用 Java 和 Hibernate HQL 验证账户余额

java - 将 Maven 导出为包含所有依赖项的 jar 文件

java - 如何更新与同一表的其他记录匹配的表字段

java - 在java中为各种语言环境格式化给定的货币? (四舍五入问题)

java - 右对齐光标在 JTextPane 组件中未显示

java - URL 连接在小程序中不起作用

java - NetBeans IDE 未运行项目或文件

java - 以 Reader 方式打开 InputStream

java - 是否应该在 equals 和 hashCode 中考虑 JPA 实体的 id 字段?