Estoy intentando definir mi propia clase de excepción de la manera más fácil, y esto es lo que obtengo:
public class MyException extends Exception {}
public class Foo {
public bar() throws MyException {
throw new MyException("try again please");
}
}
Esto es lo que dice el compilador de Java:
cannot find symbol: constructor MyException(java.lang.String)
Tengo la sensación de que este constructor tiene que ser heredado de java.lang.Exception
, ¿no?
No, no se "heredan" los constructores no predeterminados, tienes que definir el que toma un String en tu clase. Normalmente usas super(mensaje)
en tu constructor para invocar a tu constructor padre. Por ejemplo, así:
public class MyException extends Exception {
public MyException(String message) {
super(message);
}
}
Una típica excepción personalizada que yo definiría es algo así:
public class CustomException extends Exception {
public CustomException(String message) {
super(message);
}
public CustomException(String message, Throwable throwable) {
super(message, throwable);
}
}
Incluso creo una plantilla usando Eclipse para no tener que escribir todo el material una y otra vez.