public boolean validateXML() throws Exception {
sepaRTLogger.info("Entered validateXML()");
Schema schema = listOfXSDs.get(xmlVersion);
sepaRTLogger.debug("matched schema:::" + schema);
System.out.println("matched schema:::" + schema);
try {
Validator validator = schema.newValidator();
validator.validate((Source) (new StreamSource(XMLStreamForValidation)));
} catch (Exception e){
if(e instanceof IOException) {
sepaRTLogger.error("IOException error:",e);
}
if(e instanceof SAXException){
sepaRTLogger.error("SAXException error:",e);
retriggerException.reThrow(msgTagID, null, new SAXException(), e.getMessage(), "TFLT101");
}
throw new Exception( e);
}finally{
XMLStreamForValidation.close();
}
return true;
}
第 1 行打印错误,但异常在第 2 行变为空。因此无法传播此异常。
catch (Throwable e) {
throw (RuntimeException) e;
}
实际上,catch(Throwable)会捕获所有内容,包括错误和检查异常(SAXException)。另外,检查异常可以放在 try...catch 块中,其中 RuntimeException 有一个 Exception 超类,以便它可以传播。