hi andrew and list, I have another small Q on nested exception.
Consoder a nomal web scenario, where a request comes to Action, delegated to Business logic class, that class queries database and follows the path back. CustomerAction -----> Customer ----------> JDO etc. | ReqFailException <----DataException V ReqFailHandler <global-exception> | V reqfail .jsp As most(can we say All) of the requests go up to database and any method can throw exception. SO... This simple flow cleary shows that EVERY method in _JDO_ MUST be throwing DataException that CAN be *catched* by _Customer_ and consequently EVERY method in Customer WILL *throw* nested ReqFailException. PunchLine: Every method is throwing _exception_ to it's caller. Note that 2-3 methods in Customer MAY throw additional exception but ReqFailException will ALWAYS be thrown to Action class. Is that OK in normal practices? Looking forward to some replies. -Navjot Singh PS - May be i will understand it' use better if you can give me some sample code ;-) ----- Original Message ----- From: "Andrew Hill" <[EMAIL PROTECTED]> To: "Struts Users Mailing List" <[EMAIL PROTECTED]> Sent: Thursday, April 03, 2003 5:02 PM Subject: RE: Where to catch/throw Exceptions in Struts Tiered Architecture > Generally, returning null when it should be an error is considered bad > practice. (If null is a valid return value of course thats a different > matter). > In this case you should throw an exception and catch it in the calling class > and branch or throw again appropriately. > You dont want your calling class to have to know about low level details > like specific sql exceptions though, so instead of just letting the sql > exception propogate upwards, you would catch it and throw a different more > abstract exception (probably one you create yourself) up to the caller - the > caller shouldnt have to know the details about your persistence mechanism - > it just needs to know it failed - and sometimes needs to know if the failure > is fatal and any other pertinent info. > The nested excpetion classes should also be able to keep a reference to the > exception they wrap so the stacktrace show all the exceptions in the chain - > useful when debugging. > > btw: If I recall rightly Ted Husted explains this 10 times better in one > tenth the words in his book (struts in action) > > Have a look at these articles: > http://developer.java.sun.com/developer/technicalArticles/Programming/except > ions/ > http://www-106.ibm.com/developerworks/java/library/j-ejb01283.html > http://www.javaworld.com/javatips/jw-javatip91_p.html > > There was another very good one too - but it doesnt seem to be in my > favourites list and I cant seem to find it now. > > > -----Original Message----- > From: Navjot Singh [mailto:[EMAIL PROTECTED] > Sent: Thursday, 3 April 2003 18:53 > To: Struts Users Mailing List; [EMAIL PROTECTED] > Subject: Re: Where to catch/throw Exceptions in Struts Tiered > Architecture > > > hi andrew, > > but surely these long stacktraces are not meant for users ;-) > > what i have got from your statement is something like this > > SQLException > |__DatabaseException > |____ApplicationException > > finally, this ApplicationException is what is being thrown into execute() > call. > > May i am novice, but I still need to be convinced about throwing so many > exceptions in chain > > Can't the stuff be handled in a simple way -- > SAY > a. when you get SQLException, catch and return NULL > b. Calling Class __ifs__ for NULL instead of __catching__ and transfer the > control accordingly. > > Is there something i am ignoring? > > regards > Navjot Singh > > ----- Original Message ----- > From: "Andrew Hill" <[EMAIL PROTECTED]> > To: "Struts Users Mailing List" <[EMAIL PROTECTED]> > Sent: Thursday, April 03, 2003 3:49 PM > Subject: RE: Where to catch/throw Exceptions in Struts Tiered Architecture > > > | I use nested exceptions, and virtually all my methods (and thus layers) > | catch and wrap and throw... > | Makes for some impressively long stacktraces - and is marvellous for > | debugging! :-) > | > | > | -----Original Message----- > | From: Navjot Singh [mailto:[EMAIL PROTECTED] > | Sent: Thursday, 3 April 2003 18:05 > | To: Struts Users List > | Subject: Where to catch/throw Exceptions in Struts Tiered Architecture > | > | > | Hi, > | > | Take a simple case. > | > | Action > | Y > | UserAction -> User -> Database > | | > | V > | user.jsp > | > | Say, Database throws exception. What is best way to handle exception? > | > | 1. Catch in User class and return NULL / some ErrorObject to UserAction > and > | let UserAction decide how to handle it? > | > | 2. Let User class __pass on__ the Exception from Database to UserAction. > | > | 2a. As execute() is already throwing Exception so it will handle ALL so > Set > | <global-exception> handler that can send the user to some nice page? > | 2b. Catch Exception in UserAction and then do some thing ... > | > | Which one do you guys follow in not-so-large scale web applications? > | > | would appreciate any comments. > | -navjot singh > | > | > | > | > | --------------------------------------------------------------------- > | To unsubscribe, e-mail: [EMAIL PROTECTED] > | For additional commands, e-mail: [EMAIL PROTECTED] > | > | > | --------------------------------------------------------------------- > | To unsubscribe, e-mail: [EMAIL PROTECTED] > | For additional commands, e-mail: [EMAIL PROTECTED] > | > | > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]