SAX/Java: Exceptions, Again
ak117 at freenet.carleton.ca
Fri Jan 9 02:21:07 GMT 1998
I think that I've just answered my own question about Exception
handling in the Java implementation of SAX. There is no reason that
the SAX frontend for each parser cannot pack exceptions from the
callbacks into a container and unpack them for the top-level
transparently -- that way, the parser can still have tight
compile-time error checking, but application writers won't have to
jump through hoops to throw exceptions to the top level. Unless I
read a good argument to the contrary, then, the interface will look
public void startDocument ()
public void endDocument ()
public void characters (char ch, int start, int end)
/* etc. */
Implementations can use much stricter type checking themselves, and
are not required to throw any exceptions at all -- the Java interface
just gives the boundary (in this case, any or no exceptions).
I still need to define what a SAX parser is allowed to catch and what
it may pass through. Here's a rough sketch:
1) A parser must catch all of its own, internal exceptions (i.e. no
SAX parser should throw an exception that others do not -- this can
be managed in the SAX frontend if necessary).
2) A parser may catch any exceptions derived from
java.io.IOException (that includes the networking exceptions), but
only if it is capable of resolving or working around the problem
corresponding to the exception; otherwise, it must throw it on
through to the top-level user code.
3) A parser must pass all other exceptions up to the user code.
What am I missing in this list?
All the best,
David Megginson ak117 at freenet.carleton.ca
Microstar Software Ltd. dmeggins at microstar.com
xml-dev: A list for W3C XML Developers. To post, mailto:xml-dev at ic.ac.uk
Archived as: http://www.lists.ic.ac.uk/hypermail/xml-dev/
To (un)subscribe, mailto:majordomo at ic.ac.uk the following message;
To subscribe to the digests, mailto:majordomo at ic.ac.uk the following message;
List coordinator, Henry Rzepa (mailto:rzepa at ic.ac.uk)
More information about the Xml-dev