Win a copy of AWS Security this week in the Cloud/Virtualization forum!
  • Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Paul Clapham
  • Jeanne Boyarsky
  • Junilu Lacar
  • Henry Wong
Sheriffs:
  • Ron McLeod
  • Devaka Cooray
  • Tim Cooke
Saloon Keepers:
  • Tim Moores
  • Stephan van Hulst
  • Frits Walraven
  • Tim Holloway
  • Carey Brown
Bartenders:
  • Piet Souris
  • salvin francis
  • fred rosenberger

Application Exceptions

 
Bartender
Posts: 1104
10
Netbeans IDE Java Ubuntu
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hello,
In EJB, the Application exceptions and system exceptions are handled differently. System exceptions are wrapped in RunTimeException, while application exceptions are thrown back as it is. This is because, we always have our Application exceptions as checked exceptions.

Now,lets say I have a method which takes an integer argument, and if it is less than 1000, I want to throw back an exception. Instead of writing a new exception, I decide to use IllegalArgumentException. Also, in the method signature, in the throws clause I specify this(though not required as it is an RunTimeException). But now, as the container sees this as an RunTimeException, it throws me back an RunTimeException and not IllegalArgumentException as I wanted.

So, why is it designed this way?
I end up writing lot of custom exceptions because of this. What is the way out?

Thank You,
Ranga.
 
Ranch Hand
Posts: 125
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hello,
you say : "System exceptions are wrapped in RunTimeException"
No, the system exceptions ARE RuntimeException, so when the Bean throws a RuntimeException, the container wraps it into an EJBException.
Then, if the client is local, it receives the EJBException (or a TransactionRolledBackLocalException), while if it is remote, it receive a RemoteException (or a TransactionRolledBackException)

A System exception is a non-recoverable situation where you haven't a fine-grained control, so you simply can throw an EJBException...but if the IllegalArgumentException is the cause of a missing business requirements, you must signal it with an application exception...

Ciao
 
I brought this back from the farm where they grow the tiny ads:
Devious Experiments for a Truly Passive Greenhouse!
https://www.kickstarter.com/projects/paulwheaton/greenhouse-1
    Bookmark Topic Watch Topic
  • New Topic