Java Platform, Enterprise Edition (Java EE) 8
The Java EE Tutorial
The exceptions thrown by enterprise beans fall into two categories: system and application.
A system exception indicates a problem with the services that support an
application. For example, a connection to an external resource cannot be
obtained, or an injected resource cannot be found. If it encounters a
system-level problem, your enterprise bean should throw a
javax.ejb.EJBException. Because the
EJBException is a subclass of
RuntimeException, you do not have to specify it in the
of the method declaration. If a system exception is thrown, the EJB
container might destroy the bean instance. Therefore, a system exception
cannot be handled by the bean’s client program, but instead requires
intervention by a system administrator.
An application exception signals an error in the business logic of an
enterprise bean. Application exceptions are typically exceptions that
you’ve coded yourself, such as the
BookException thrown by the
business methods of the
CartBean example. When an enterprise bean
throws an application exception, the container does not wrap it in
another exception. The client should be able to handle any application
exception it receives.
If a system exception occurs within a transaction, the EJB container rolls back the transaction. However, if an application exception is thrown within a transaction, the container does not roll back the transaction.