我正在try 以最简单的方式定义我自己的异常类,这就是我得到的结果:

public class MyException extends Exception {}

public class Foo {
  public bar() throws MyException {
    throw new MyException("try again please");
  }
}

Java编译器是这样说的:

cannot find symbol: constructor MyException(java.lang.String)

我有一种感觉,这个构造函数必须从java.lang.Exception继承,不是吗?

推荐答案

不,您不需要"继承"非默认构造函数,您需要在类中定义一个接受字符串的构造函数.通常,在构造函数中使用super(message)来调用父构造函数.例如,像这样:

public class MyException extends Exception {
    public MyException(String message) {
        super(message);
    }
}

Java相关问答推荐

Mat. n_Delete()和Mat. n_release的区别

Listview—在Android Java中正确链接项目时出错

@org.springframework.beans.factory.annotation.Autowired(required=true)-注入点有以下注释:-SpringBoot

上下文初始化期间遇到异常-使用Java配置配置HibernateTemplate Bean时

Kubernetes的Java客户端检索状态.处于终止状态的Pod的阶段';正在运行';

Java中的死锁及其重入锁和锁

为什么S的文档中说常量方法句柄不能在类的常量池中表示?

使用Spring和ActiveMQ的侦听器方法引发属性名称不能重复为空警告

是否为计划任务补偿系统睡眠?

如何读取3个CSV文件并在控制台中按顺序显示?(Java)

插入中的JOOQ序列,设置为VS值

如何在ApacheHttpClient 5中为单个请求设置代理?

如何使用Java对随机生成的字母数字优惠券代码进行过期设置

获取401未经授权,即使在标头中设置了浏览器名称和cookie

Java 21保护模式的穷尽性

如何从指定某些字段的父对象创建子对象

java 11上出现DateTimeParseException,但java 8上没有

如何在 WebSphere Application Server 内的托管线程上运行 BatchEE 作业(job)?

如何使用 Java 替换位于特定标记内的 XML 标记的 CDATA 内的值

为什么 static Thread.currentThread().getName() 和 getName() 之间有区别?