Life is never that simple, James! Academics are prone to produce bland
generalizations and are notorious for being out of touch with reality,
though I suspect that this is due to a few loonies giving the rest a bad
name! Clearly, most academics do a great deal of invaluable work for which
they have my deepest gratitude.

I once heard that a university professor who claimed that it wasn't possible
to write more than 10 lines of fully debugged code per day. I've been
developing software for 25 years and if my output was anything like that I'd
have gone broke years ago! Only a few months ago at a Java Users Group
meeting I overheard an academic stating with conviction that "If you have to
use a case statement then you didn't do your OOD properly." -- yeah,
right...cretin.

To answer your question: in any software system, at any point between where
an error occurs and where the outer-most calling code needs to know about
the error, it is potentially appropriate to cook the error. In many
circumstances it is inappropriate for calling code to know the simple, raw
reason why an error occurs. For example, suppose that during some web
service method call a required file was discovered to be absent from its
expected location on a disk. Should you tell the web service client about
this? Most likely not, because that piece of information is unlikely to be
meaningful to the client. Instead, code much closer to error needs to figure
out the consequences and throw an interpretation up the chain where other
code might be able to do something to fix the problem (e.g. create a new
file from default values and retry) or to rethrow a more intelligible error.

Unfortunately, cooking errors is something that often doesn't happen because
too many programmers have higher priorities and finite deadlines. How many
times have you seen a ClassCastException and wondered which class the code
was attempting to cast to? One poorly handled error can result in a great
deal of wasted time, collectively over thousands of people.

Also, please note that there are many types of error and you need to be
aware that during software development we see errors (that tend to be
uncooked) that arise through flaws in the logic of the software and will go
away once the code has been debugged but, as an aid to development, we might
want to cook them if they are not immediately resolvable. As I said, reality
is rarely simple, at least not when human beings are involved.

BTW, this is not a design issue, it's about writing good software.


Jeff


Between the question and the answer, all too often, lies pure hell



----- Original Message ----- 
From: "James Taylor" <[EMAIL PROTECTED]>
To: <[email protected]>
Sent: Thursday, June 02, 2005 10:22 AM
Subject: web service error handling design issue


Hey,
    another design issue on a different note. In our college course we a
told to
propogate error up to the top layer/controller and deal with them
appropriately.
What's the best way to deal with errors in the case of web services? Should
I
catch the exception and return an appropriate fault node/code and deal with
this in the client code or catch the error at the service provider top level
and return an appropriate explanation?
    Just looking for ideas and what way is it done in industry.
    Thanks to anyone that gives my the time to answer,
                                                      James.


--
Between the question and the answer lies free will

Reply via email to