checkException() method sometimes returns NULL
Reported by user:
The checkException() method sometimes returns NULL for the different processors such as XsltProcessor, SchemaValidator, XQueryProcessor and XPathProcessor.
Investigating the code for the
checkException() method it calls the method
checkForException() in the file SaxonCGlue.c. Internally it is looking for the net.sf.saxon.s9api.SaxonApiException exception. Therefore it ignores other exceptions unless the DEBUG option is on (We should review if this is the right thing to do).
The design is to catch all kinds of exceptions on Java and wrap them as SaxonApiException. But it looks like there are a few places where we are not doing that.
Updated by O'Neil Delpratt over 4 years ago
- Status changed from New to In Progress
Finally managed to look at this bug issue again. The problem is in the C++ code base for the processors: XSLT, XQuery, Schema and XPath we use in some places the method
checkForExceptionCPP without the user requesting for it which creates an
SaxonApiException object which contains a list of errors found after the execution of the processor. This method clears the JNI exception occurs notification.
Strangely when the user calls the method
checkException this calls the C function
checkForException. At this stage the exception has already been cleared therefore no exception is going to be reported.
This bug is related to #3963
Please register to edit this issue