# com.beasys.commerce.foundation.exception
ApplicationException Class

public class ApplicationException
extends `Exception`
implements `MessageCatalogException`

The `ApplicationException` class is used to signal checked business logic exceptions to a caller. It is the base application exception class.

The `ApplicationException` class is closely tied to the `MessageCatalog```. An `ApplicationException` contains a log and user message that is constructed using the `MessageCatalog`. In fact, each `ApplicationException` derivative should have at least one user and log catalog message.

In the case of an EJB, the following guidelines should be followed:

According to the EJB 1.1 specification, an application exception is an exception defined in the throws clause of the enterprise bean home and remote interfaces, other than the `RemoteException```.

A bean provider is responsible for defining application exceptions in bean remote and home interfaces and is also responsible for throwing an appropriate application exception from a bean method to report a business logic exception to the client. If necessary, the bean provider should subclass the `ApplicationException` class to create package-specific application exceptions. However, a bean provider is responsible for using the standard EJB application exceptions (`CreateException```, `FinderException```, `RemoveException```, `DuplicateKeyException```, `ObjectNotFoundException```) where appropriate.

Since an application exception does not, and should not, automatically mark the existing transaction (if any) for rollback, the bean provider must do one of the following before throwing the exception, in order to insure data integrity:

- Ensure that the instance is in a consistent state.
- Mark the transaction for rollback using `EJBContext.setRollbackOnly()```.

The second option is only available when the bean is deployed with Container managed transaction management. Therefore, in order not to tie the bean implementation to a specific deployment, try to avoid using `setRollbackOnly` at all costs. If this is not possible, consider using a `FatalApplicationException```.

Related Topics

``MessageCatalog``
``FatalApplicationException``
``MessageCatalogException``

Hierarchy
  `Object`
  `Throwable`
  `Exception`
  `ApplicationException`

All Implemented Interfaces
  `MessageCatalogException`, `Serializable`

Direct Known Subclasses
  `BMPException`, `CatalogException`, `DiscountException`, `IllegalWorkflowTransitionException`, `InconsistentStateException`, `InvalidArgumentException`, `InvalidCurrencyException`, `ItemNotInShoppingCartException`, `OrderInventoryException`, `OrderInvoicingException`, `OrderShippingException`, `PaymentException`, `PaymentProcessException`, `PricingException`, `ProcessingException`, `ShippingMethodException`, `TaxException`

## Field Summary

`protected `Exception`` | `embeddedException` The embedded exception.
`protected `Stack`` | `logMessages` The log messages.
`protected `Stack`` | `userMessages` The user messages.

## Constructor Summary

ApplicationException() Constructs an `ApplicationException` with no associated message.
ApplicationException(`ApplicationException` topException, `ApplicationException` bottomException) Constructs an `ApplicationException` from two source `ApplicationException`s by concatinating the screen and log messages of the two source `ApplicationException`s.
ApplicationException(`String` namespace, `String` messageKey, `Exception` exception) Class constructor taking the namespace and key of the associated catalog message and an embedded exception.
ApplicationException(`String` namespace, `String` messageKey, `Object` argument, `Exception` exception) Class constructor taking the namespace and key of the associated catalog message, message parameter substitution argument, and an embedded exception.
ApplicationException(`String` namespace, `String` messageKey, `Object` argument) Class constructor taking the namespace and key of the associated catalog message and a message parameter substitution argument.
ApplicationException(`String` namespace, `String` messageKey, `Object` arguments, `Exception` exception) Class constructor taking the namespace and key of the associated catalog message, message parameter substitution arguments, and an embedded exception.
ApplicationException(`String` namespace, `String` messageKey, `Object` arguments) Class constructor taking the namespace and key of the associated catalog message and message parameter substitution arguments.
ApplicationException(`String` namespace, `String` messageKey) Class constructor taking the namespace and key of the associated catalog message.

## Method Summary

`public void` | `addLogMessage`(`String` namespace, `String` messageKey) Adds a new log catalog message to the stack of associated messages.
`public void` | `addLogMessage`(`String` namespace, `String` messageKey, `Object` argument) Adds a new log catalog message to the stack of associated messages.
`public void` | `addLogMessage`(`String` namespace, `String` messageKey, `Object`[] arguments) Adds a new log catalog message to the stack of associated messages.
`public void` | `addMessage`(`String` namespace, `String` messageKey) Adds a new user and log catalog message to the stack of associated messages.
`public void` | `addMessage`(`String` namespace, `String` messageKey, `Object` argument) Adds a new user catalog message to the stack of associated messages.
`public void` | `addMessage`(`String` namespace, `String` messageKey, `Object`[] arguments) Adds a new user catalog message to the stack of associated messages.
`public void` | `addUserMessage`(`String` namespace, `String` messageKey) Adds a new user catalog message to the stack of associated messages.
`public void` | `addUserMessage`(`String` namespace, `String` messageKey, `Object` argument) Adds a new user catalog message to the stack of associated messages.
`public void` | `addUserMessage`(`String` namespace, `String` messageKey, `Object`[] arguments) Adds a new user catalog message to the stack of associated messages.
`public `Exception`` | `getEmbeddedException`() Gets the embedded exception associated with this exception.
`public `String`` | `getLocalizedMessage`() Returns the user message associated with this exception.
`public `String`` | `getLogMessage`() Returns the first log catalog message associated with this exception.
`public `Iterator`` | `getLogMessages`() Returns an iterator over all the log catalog messages associated with this exception.
`public `String`` | `getMessage`() Returns the user message associated with this exception.
`public `String`` | `getUserMessage`() Returns the first user catalog message associated with this exception.
`public `Iterator`` | `getUserMessages`() Returns an iterator over all the user catalog messages associated with this exception.
`public `String`` | `toString`() Returns a string representation of this exception.

Methods from `java.lang.`Throwable``
`fillInStackTrace, getCause, getStackTrace, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace,`

Methods from class `java.lang.`Object``
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Methods from interface `com.beasys.commerce.foundation.exception.`MessageCatalogException``
``addLogMessage`, `addLogMessage`, `addLogMessage`, `addMessage`, `addMessage`, `addMessage`, `addUserMessage`, `addUserMessage`, `addUserMessage`, `getEmbeddedException`, `getLogMessage`, `getLogMessages`, `getUserMessage`, `getUserMessages``

## Field Detail

### embeddedException

    protected Exception embeddedException

  The embedded exception.

### logMessages

    protected Stack logMessages

  The log messages.

### userMessages

    protected Stack userMessages

  The user messages.

## Constructor Detail

### ApplicationException

    public ApplicationException()

  Constructs an `ApplicationException` with no associated message.

### ApplicationException

    public ApplicationException(ApplicationException topException,
                                ApplicationException bottomException)

  Constructs an `ApplicationException` from two source `ApplicationException`s by concatinating the screen and log messages of the two source `ApplicationException`s. The messages of the first `ApplicationException` will preceed those of the second in the constructed `ApplicationException`. Furthermore, the new `ApplicationException` will have the embedded exception of the first `ApplicationException` associated with it.

### ApplicationException

    public ApplicationException(String namespace,
                                String messageKey,
                                Exception exception)

  Class constructor taking the namespace and key of the associated catalog message and an embedded exception.

### ApplicationException

    public ApplicationException(String namespace,
                                String messageKey,
                                Object argument,
                                Exception exception)

  Class constructor taking the namespace and key of the associated catalog message, message parameter substitution argument, and an embedded exception.

### ApplicationException

    public ApplicationException(String namespace,
                                String messageKey,
                                Object argument)

  Class constructor taking the namespace and key of the associated catalog message and a message parameter substitution argument.

### ApplicationException

    public ApplicationException(String namespace,
                                String messageKey,
                                Object[] arguments,
                                Exception exception)

  Class constructor taking the namespace and key of the associated catalog message, message parameter substitution arguments, and an embedded exception.

### ApplicationException

    public ApplicationException(String namespace,
                                String messageKey,
                                Object[] arguments)

  Class constructor taking the namespace and key of the associated catalog message and message parameter substitution arguments.

### ApplicationException

    public ApplicationException(String namespace,
                                String messageKey)

  Class constructor taking the namespace and key of the associated catalog message.

## Method Detail

### addLogMessage(String, String) Method

    public void addLogMessage(String namespace,
                              String messageKey)

Description copied from `MessageCatalogException.addLogMessage(String, String)`
Adds a new log catalog message to the stack of associated messages.

#### Parameters

namespace
  Log catalog message namespace.

messageKey
  Log catalog message key.

### addLogMessage(String, String, Object) Method

    public void addLogMessage(String namespace,
                              String messageKey,
                              Object argument)

Description copied from `MessageCatalogException.addLogMessage(String, String, Object)`
Adds a new log catalog message to the stack of associated messages.

#### Parameters

namespace
  Log catalog message namespace.

messageKey
  Log catalog message key.

argument
  Message parameter substitution argument.

### addLogMessage(String, String, Object[]) Method

    public void addLogMessage(String namespace,
                              String messageKey,
                              Object[] arguments)

Description copied from `MessageCatalogException.addLogMessage(String, String, Object[])`
Adds a new log catalog message to the stack of associated messages.

#### Parameters

namespace
  Log catalog message namespace.

messageKey
  Log catalog message key.

arguments
  Message parameter substitution arguments.

### addMessage(String, String) Method

    public void addMessage(String namespace,
                           String messageKey)

Description copied from `MessageCatalogException.addMessage(String, String)`
Adds a new user and log catalog message to the stack of associated messages.

#### Parameters

namespace
  User and log catalog message namespace.

messageKey
  User and log catalog message key.

### addMessage(String, String, Object) Method

    public void addMessage(String namespace,
                           String messageKey,
                           Object argument)

Description copied from `MessageCatalogException.addMessage(String, String, Object)`
Adds a new user catalog message to the stack of associated messages.

#### Parameters

namespace
  User and log catalog message namespace.

messageKey
  User and log catalog message key.

argument
  Message parameter substitution argument.

### addMessage(String, String, Object[]) Method

    public void addMessage(String namespace,
                           String messageKey,
                           Object[] arguments)

Description copied from `MessageCatalogException.addMessage(String, String, Object[])`
Adds a new user catalog message to the stack of associated messages.

#### Parameters

namespace
  User and log catalog message namespace.

messageKey
  User and log catalog message key.

arguments
  Message parameter substitution arguments.

### addUserMessage(String, String) Method

    public void addUserMessage(String namespace,
                               String messageKey)

Description copied from `MessageCatalogException.addUserMessage(String, String)`
Adds a new user catalog message to the stack of associated messages.

#### Parameters

namespace
  User catalog message namespace.

messageKey
  User catalog message key.

### addUserMessage(String, String, Object) Method

    public void addUserMessage(String namespace,
                               String messageKey,
                               Object argument)

Description copied from `MessageCatalogException.addUserMessage(String, String, Object)`
Adds a new user catalog message to the stack of associated messages.

#### Parameters

namespace
  User catalog message namespace.

messageKey
  User catalog message key.

argument
  Message parameter substitution argument.

### addUserMessage(String, String, Object[]) Method

    public void addUserMessage(String namespace,
                               String messageKey,
                               Object[] arguments)

Description copied from `MessageCatalogException.addUserMessage(String, String, Object[])`
Adds a new user catalog message to the stack of associated messages.

#### Parameters

namespace
  User catalog message namespace.

messageKey
  User catalog message key.

arguments
  Message parameter substitution arguments.

### getEmbeddedException() Method

    public Exception getEmbeddedException()

Description copied from `MessageCatalogException.getEmbeddedException()`
Gets the embedded exception associated with this exception.

#### Returns

The embedded exception.

### getLocalizedMessage() Method

    public String getLocalizedMessage()

Returns the user message associated with this exception.

Overrides
  `Throwable.getLocalizedMessage()`

#### Returns

The user message associated with this exception.

### getLogMessage() Method

    public String getLogMessage()

Description copied from `MessageCatalogException.getLogMessage()`
Returns the first log catalog message associated with this exception.

#### Returns

The first log catalog message associated with this exception.

### getLogMessages() Method

    public Iterator getLogMessages()

Description copied from `MessageCatalogException.getLogMessages()`
Returns an iterator over all the log catalog messages associated with this exception.

#### Returns

An iterator over all log catalog messages.

### getMessage() Method

    public String getMessage()

Returns the user message associated with this exception.

Overrides
  `Throwable.getMessage()`

#### Returns

The user message associated with this exception.

### getUserMessage() Method

    public String getUserMessage()

Description copied from `MessageCatalogException.getUserMessage()`
Returns the first user catalog message associated with this exception.

#### Returns

The user catalog message associated with this exception.

### getUserMessages() Method

    public Iterator getUserMessages()

Description copied from `MessageCatalogException.getUserMessages()`
Returns an iterator over all the user catalog messages associated with this exception.

#### Returns

An iterator over all user catalog messages.

### toString() Method

    public String toString()

Returns a string representation of this exception.

Overrides
  `Throwable.toString()`

#### Returns

A string representation of this exception.