RE: Exception Handling Opinion 2004-12-13 - By Philip Nelson
--- Robert Hanson <rhanson@(protected)> wrote: > I'm not sure what you're trying to accomplish here. > > If your business component has a rule, and the data provided is > inappropriate, then it is acceptable to throw an exception. The consumer > of the business logic should expect the exception and catch it. What they > decide to do with it is up to them. If you want the consumer of the > exception to change the message, well then you should document what the > exception is and what you expect the consumer to do, and leave it at that.
I guess I disagree with that statement in theory even if in practice it's often what happens. A well behaved object should only blow up when it can't be in a consistent state based on the input received. If a caller of one of my objects passes a null or inappropriate type to a method, my ideal object would somehow pass back a message telling the caller nicely what it did wrong. That is where a delegate might make more sense. Another approach I have often used is a "ProcessLog" that allows the object to log the problem, protect it's internal state and continue on. This is especially useful when processing streams of data and you need to continue on.
Very often though, an exception does get thrown when an object can't handle something. In that case, a well behaved object should add it's own information to the stack trace to help the system determine what went wrong. These partially handled exceptions can be associated with user messages by typing them to something that an upstream error handler can interpret.
Finally, there are those cases where there was no idea what went wrong in the code. I agree with others that say this should just get bubbled up unhandled until the top level error handler logs the stack trace and gives a general error message.
===== Philip - http://blogs.xcskiwinn.org/panmanphil "There's a difference between righteous anger and just being crabby" - Barbara
Need SQL Advice? http://sqladvice.com Need RegEx Advice? http://regexadvice.com Need XML Advice? http://xmladvice.com
|
|