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]

Reply via email to