Системное исключение или Исключение приложения

StackOverflow https://stackoverflow.com//questions/22061597

  •  23-12-2019
  •  | 
  •  

Вопрос

Меня смущает расплывчатый момент в определении и возможное влияние Application Exceptions и System Exceptions в EJB.В частности, я не могу понять, определено ли Исключение как:

public class SomeException extends Exception{
...
}

собирается стать Application или System Exception.В соответствии со спецификацией Application Exception всегда должно определяться с помощью аннотации @ApplicationException.Следовательно, я делаю вывод, что приведенный выше класс не является Application Exception даже несмотря на то, что это проверенное исключение.Возникающие у меня вопросы относятся к правильному синтаксису Java и, следовательно, к поведению EJB Container в случае, если это Exception должен быть реализован в рамках бизнес-метода Session Bean (не Singleton хотя):

@Stateless
@LocalBean
public class StatelessBean{

public void doStuff(){
throw new SomeException(); 
}

}

1) Следует ли SomeException быть объявленным в предложении throw?

2) Выполняет ли Container отбрасывает экземпляр после метода doStuff() называется?

3) Если это, наконец, Sytem Exception верно ли мое предположение, что System Exception может быть проверенным, а может и нет RuntimeException?

Обновить:

На мой взгляд, в соответствии со спецификацией не совсем ясно, что проверяемое исключение всегда должно быть Application Exception.Что, если бы кто-то определил проверенный RuntimeException?Должен ли он быть включен в throw о каком методе?Является ли это System или Application Exception?

 public class SomeException extends RuntimeException{
    ...
    }
Это было полезно?

Решение

В спецификации говорится:

Исключения приложений, которые являются проверяемыми исключениями, могут быть определены как таковые путем перечисления в предложениях throws методов бизнес-интерфейса компонента, представления без интерфейса, домашнего интерфейса, интерфейса компонента и конечной точки веб-службы.Исключение приложения, являющееся непроверенным исключением, определяется как исключение приложения путем аннотирования его аннотацией метаданных ApplicationException или обозначения его в дескрипторе развертывания элементом application- exception.

Итак, приведенный выше класс является исключением приложения, поскольку это проверяемое исключение.И, конечно, это должно быть указано в предложении throws вашего метода, иначе код не будет компилироваться.И нет, экземпляр bean не будет удален после создания этого исключения, согласно спецификации.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top