J’essaie de définir ma propre classe d’exception de la manière la plus simple, et voici ce que j’obtiens :
public class MyException extends Exception {}
public class Foo {
public bar() throws MyException {
throw new MyException("try again please");
}
}
C'est ce que dit le compilateur Java :
cannot find symbol: constructor MyException(java.lang.String)
J'ai l'impression que ce constructeur doit être hérité de [java.lang.Exception
][1], n'est-ce pas ?
[1] : https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html
Non, vous ne pouvez pas "hériter" des constructeurs par défaut, vous devez définir celui qui prend un String dans votre classe. Typiquement, vous utilisez super(message)
dans votre constructeur pour invoquer votre constructeur parent. Par exemple, comme ceci :
public class MyException extends Exception {
public MyException(String message) {
super(message);
}
}
Une exception personnalisée typique que je définirais est quelque chose comme ceci :
public class CustomException extends Exception {
public CustomException(String message) {
super(message);
}
public CustomException(String message, Throwable throwable) {
super(message, throwable);
}
}
Je crée même un modèle à l’aide d’Eclipse pour ne pas avoir à écrire tout cela encore et encore.