Вообще говоря, компилятор Java не распространяет информацию о том, что метод "всегда" генерирует исключение и, следовательно, не обнаруживает, что все пути кода завершены.
(Это связано с тем, что компилятор Java компилирует каждый класс самостоятельно).
Это проблема, когда вы хотите написать что-то подобное.
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");
}
}
(т.е. своего рода "помощник подтверждения", который собирает контекстную информацию).
Поскольку компилятор будет жаловаться, что myMethod не всегда возвращает MyObject.
Насколько я знаю, нет конкретной аннотации, указывающей, что метод всегда выдает.