[
Lists Home |
Date Index |
Thread Index
]
> I was working with Xerces-J this weekend and encountered what I thought was
> a
> major bug-- however upon rereading the SAX API docs I suspect I may be
> mistaken. For some reason I was under the impression that the endDocument
> function was guaranteed-- meaning, that even in an exceptional circumstance
> endDocument would be called. This allowed a guaranteed place (expeccially in
> the case of filters) to do cleanup after a parse.
>
> This is definitely the case for AElfred2, but the API docs are not crystal
> clear on the subject (though I thought they used to be). With AElfred2,
> even in the case of a user generated exception the endDocument handler will
> be called. In Xerces if an exception occurs it stops the process completely
> omitting the endDocument call.
When I wrote the SAX2 wrapper for Expat I had it the Xerces way, but
then I re-read the specs and changed my mind, mostly because the docs
for endDocument() use the same wording as for startDocument()
(which is guaranteed):
"The SAX parser will invoke this method only once..."
On the other hand one could say that because a SAX parser does not throw
exceptions for parse errors, exception handling is outside of its scope
and one should therefore follow the normal practice that an exception
(thrown by an error handler) really should force parse() to return immediately.
This would make more sense to me.
So, instead of answering your question I will join your request
for clarification.
Karl
|