[
Lists Home |
Date Index |
Thread Index
]
Tim,
Well, you hit one of the dirtier chapters in the SAX usage story. The
SAXException denotes that something is wrong with the parsed document:
it is not XML correct OR it contains bogus data according to your
ContentHandler. It kinda makes sense in a Java way. Keeping that in mind
you could do something like this:
Make a class called TimBraySAXException:
public class TimBraySAXException extends SAXException { //details.. }
Change your ContentHandlers to use:
try
{
myValidationCode(s, start, length);
}
catch (Exception e)
{
throw new TimBraySAXException (e);
}
And you do not have to do any picking anymore:
try
{
xmlReader.parse("mydoc.xml");
}
catch (TimBraySAXException e)
{
//do one thing
}
catch (SAXException e)
{
//do other, probably less interesting, thing.
}
Hope that helps!
Mik Lernout
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. I can't throw an Exception of any kind without
> screwing up the signature. So I have this pattern all over my code.
>
> try
> {
> myValidationCode(s, start, length);
> }
> catch (Exception e)
> {
> throw new SAXException(e);
> }
>
> And then I have to catch the SAXException and pick it apart to see if
> it's really one of mine. All of which seems kind of dorky. I'm sure
> there must be a standard good practice that's been developed here? -Tim
>
>
> -----------------------------------------------------------------
> The xml-dev list is sponsored by XML.org <http://www.xml.org>, an
> initiative of OASIS <http://www.oasis-open.org>
>
> The list archives are at http://lists.xml.org/archives/xml-dev/
>
> To subscribe or unsubscribe from this list use the subscription
> manager: <http://www.oasis-open.org/mlmanage/index.php>
>
|