Ogólnie rzecz biorąc, kompilator Java nie propaguje informacji, że metoda "zawsze" zgłasza wyjątek, a zatem nie wykrywa, że wszystkie ścieżki kodu są kompletne .Czy można powiedzieć kompilatorowi, że metoda zawsze generuje wyjątek
(Wynika to z faktu, że kompilator Java kompiluje każdą klasę niezależnie).
To jest problem, gdy chcesz napisać coś takiego.
public class ErrorContext {
public void fatalISE(String message) {
String context = "gather lots of information about the context of the error";
throw new IllegalStateException(context +": " + message);
}
}
public class A {
public MyObject myMethod() {
if (allIsGood()) {
return new MyObject();
}
ErrorContext.fatalISE("all is not good");
}
}
(tj. Rodzaj "pomocnika potwierdzającego", który zbiera informacje kontekstowe).
Ponieważ kompilator będzie narzekał, że myMethod nie zawsze zwraca obiekt MyObject.
Według mojej wiedzy nie ma adnotacji, która wskazywałaby, że metoda zawsze rzuca.
roztworu w innym poście [tutaj] (http://stackoverflow.com/a/11249665/1402846). – Pang