Kendi istisna sınıfımı en kolay şekilde tanımlamaya çalışıyorum ve elde ettiğim şey bu:
public class MyException extends Exception {}
public class Foo {
public bar() throws MyException {
throw new MyException("try again please");
}
}
Java derleyicisi bunu söylüyor:
cannot find symbol: constructor MyException(java.lang.String)
Bu yapıcının java.lang.Exception
'den miras alınması gerektiğini hissediyordum, değil mi?
Hayır, varsayılan olmayan kurucuları miras alamazsınız, sınıfınızda String alan bir kurucu tanımlamanız gerekir. Genellikle üst kurucunuzu çağırmak için kurucunuzda super(message)
kullanırsınız. Örneğin, bunun gibi:
public class MyException extends Exception {
public MyException(String message) {
super(message);
}
}
Tanımlayacağım tipik bir özel istisna şöyle bir şeydir:
public class CustomException extends Exception {
public CustomException(String message) {
super(message);
}
public CustomException(String message, Throwable throwable) {
super(message, throwable);
}
}
Hatta Eclipse kullanarak bir şablon bile oluşturuyorum, böylece her şeyi tekrar tekrar yazmak zorunda kalmıyorum.