我试图用最简单的方式定义我自己的异常类,这就是我得到的:
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继承。例外,不是吗?
如果你在Eclipse中使用新的类对话框,你可以将超类字段设置为java.lang.Exception,并勾选“Constructors from Superclass”,它将生成以下内容:
package com.example.exception;
public class MyException extends Exception {
public MyException() {
// TODO Auto-generated constructor stub
}
public MyException(String message) {
super(message);
// TODO Auto-generated constructor stub
}
public MyException(Throwable cause) {
super(cause);
// TODO Auto-generated constructor stub
}
public MyException(String message, Throwable cause) {
super(message, cause);
// TODO Auto-generated constructor stub
}
}
在回答下面关于不在默认构造函数中调用super()的问题时,Oracle是这样说的:
注意:如果构造函数没有显式调用超类构造函数,Java编译器会自动插入对超类的无参数构造函数的调用。