[XML-DEV Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: Seeking SAXException pattern

  • To: List <xml-dev@l...>
  • Subject: Re: Seeking SAXException pattern
  • From: Alan Gutierrez <alan-xml-dev@e...>
  • Date: Mon, 20 Dec 2004 23:35:05 -0500
  • In-reply-to: <41AC5A50.8080807@p...>
  • Mail-followup-to: List <xml-dev@l...>
  • References: <Pine.GSO.4.10.10411291433560.23877-100000@gris> <41AC5A50.8080807@p...>
  • User-agent: Mutt/1.4.1i

runtime exception saxexception
* Bill de hÓra <bill.dehora@p...> [2004-11-30 06:33]:
> Gregory Murphy wrote:
> >On Sat, 27 Nov 2004, Tim Bray wrote:
> >
> >
> >>I'm writing some java code that uses a basic SAX parser, and I haven't 
> >>done this for years if ever, and the callback routines all have 
> >>signatures that throw SAXExceptions, e.g.
> >>
> >>  public void characters(char [] s, int start, int length)
> >>    throws SAXException
> >>
> >>So, suppose I'm in this callback and something horrible happens; for 
> >>example I discover that the content that I'm looking at here is 
> >>completely bogus.
> >
> >
> >The wrapped-exception pattern is a pretty common solution to the visibility
> >problem posed by call-back APIs. The call-back code is in your class, but
> >when a problem arises, your method is sitting on top of somebody else's
> >method in the call stack. So you need some way of "tunneling" your
> >exception through.

>    try
>    {
>      myValidationCode(s, start, length);
>    }
>    catch (SAXException e)
>    {
>      throw WrappedException.raise(e);
>    }
> 
> You can subclass that and trap if you need fine graining or domain 
> specific exceptions. As a runtime exception, any caller that doesn't 
> want to deal with it doesn't have to. It also avoids trapping other 
> runtime exceptions that you don't want to be dealing with in the guts of 
> your code. [I think Bob Lee gets the credit for being the first person 
> to publicly document it.]
> 
> 
> Btw, this:
> 
>    try
>    {
>      myValidationCode(s, start, length);
>    }
>    catch (Exception e)
>    {
>      throw new SAXException(e);
>    }
> 
> is not always a good idea (and not just for SAX).
> 
> cheers
> Bill
> 
> [1] Background reading:
> http://www.mindview.net/Etc/Discussions/CheckedExceptions
> 
> (I'm not sure checked exceptions won't just become extinct eventually.)

    They are difficult to deal with.

    I've taken to creating error reporting interfaces, and allowing
    clients to throw the unchecked exception of their choosing.

    public interface Cassandra {
        public void classNotFound(String className, ClassNotFound e);

        public void security(Method method,
                             Object[] parameters,
                             InvocationException e);

        public void invocation(Method method,
                               Object[] parameters,
                               InvocationException e);
    }

    Something like the above is used to propigate reflection errors,
    but allows a client to specify the Exception thrown by providing
    an implementation.

    So, I guess I'm suggesting, you can use the ErrorHandler to
    unify all exceptions thrown to an unchecked exception of your
    choosing, but you'd still have to catch the checked SAXException.

    Bother.

--
Alan Gutierrez - alan@e...

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
 

Stylus Studio has published XML-DEV in RSS and ATOM formats, enabling users to easily subcribe to the list from their preferred news reader application.


Stylus Studio Sponsored Links are added links designed to provide related and additional information to the visitors of this website. they were not included by the author in the initial post. To view the content without the Sponsor Links please click here.

Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.