// here an application exception // there a system exception
Your example is not that great, as you're throwing the same exception System exceptions are not application exceptions. There are three patterns :
Application exceptions that are checked exceptions may be defined as such by being listed in the throws clauses of the methods.
An application exception that is an unchecked exception is defined as an application exception by annotating it with the ApplicationException metadata annotation, or denoting it in the deployment descriptor with the application-exception element.
Your example uses a checked exception (extending Exception), so it has to be defined in the throws clause of the method. Here is another example, with two application exceptions, one checked and one unchecked :