SAX2: Should SAXException extend IOException?

David Brownell david-b at
Mon Jan 3 19:00:41 GMT 2000

"Clark C. Evans" wrote:
> On Mon, 3 Jan 2000, David Brownell wrote:
> > "Clark C. Evans" wrote:
> > > I guess I'm trying to say that a data format
> > > exception in one context could easily be seen
> > > as an I/O exception in another context.
> >
> > Actually, everything boils down to an EINVAL at
> > some level ... everything else is just varying
> > layers of sugar to explain what was INVAL !  ;-)
> Yes.  And the detail of such sugar should depend
> upon the task being performed.

The interface spec captures such details.  So for
example "it's not there" (EINVAL) is distinct from
"what's there is corrupt" (EINVAL) is distinct from
"what's there has validity errors" (EINVAL) is also
different from "unsupported encoding" (EINVAL).

> Rather, a SAX parser is a processing component which takes
> an XML input source and generates an event stream as output.
> It's internal workings are encapsulated -- it does not expose
> highly granular control of its process.

No exception exposes "control"; it's a fault report,
the processor can't continue, and it's saying exactly
why it couldn't continue.  The sugar over "EINVAL" is
critical to enabling robust fault recovery.

Of course, there are people who write software that's
not robust.  Even managers who insist on it, and make
careers out of fixing the ensuing fires.

>	  Thus, possible
> automated recover schemes are (understandably) rather limited.

Which is why I can't understand the motivation to make
distinguishing the really basic cases be any more error
prone than it already is.  Any win is at best minor (not
that I agree there is one), and there are visible costs.

Bugs in fault handling code are by far the hardest to find
and fix.  Strongly typed exceptions are one of the few tools
that have come along to address that in the past decade.

> Therefore, it seems perfectly acceptable for the error to be
> generic.  Further, if you consider the SAX parser's primary
> task, that of converting an input source to an output stream,
> of the generic errors, IOException seems the best fit.

You deleted (and then ignored) the points I raised about
why "generic" _reports_ of non-generic errors are bad, so
I'll just say I remain unconvinced.

- Dave

xml-dev: A list for W3C XML Developers. To post, mailto:xml-dev at
Archived as: and on CD-ROM/ISBN 981-02-3594-1
To unsubscribe, mailto:majordomo at the following message;
unsubscribe xml-dev
To subscribe to the digests, mailto:majordomo at the following message;
subscribe xml-dev-digest
List coordinator, Henry Rzepa (mailto:rzepa at

More information about the Xml-dev mailing list