Java 无法捕获SAXParseException

Java 无法捕获SAXParseException,java,rdf,jena,Java,Rdf,Jena,您好,我正在使用jena读取som rdf文件: InputStream in = FileManager.get().open(adress); model.read(in, adress); 第二行出现问题,有时引发SAXParseException: org.xml.sax.SAXParseException: Element or attribute do not match QName production: QName::=(NCName':')?NCName.

您好,我正在使用jena读取som rdf文件:

    InputStream in = FileManager.get().open(adress);
    model.read(in, adress);
第二行出现问题,有时引发SAXParseException:

org.xml.sax.SAXParseException: Element or attribute do not match QName production: QName::=(NCName':')?NCName. 
com.hp.hpl.jena.shared.JenaException: org.xml.sax.SAXParseException: Element or attribute do not match QName production: QName::=(NCName':')?NCName. 
    at com.hp.hpl.jena.rdf.model.impl.RDFDefaultErrorHandler.fatalError(RDFDefaultErrorHandler.java:45)
    at com.hp.hpl.jena.rdf.arp.impl.ARPSaxErrorHandler.fatalError(ARPSaxErrorHandler.java:35)
    at com.hp.hpl.jena.rdf.arp.impl.XMLHandler.warning(XMLHandler.java:225)
    at com.hp.hpl.jena.rdf.arp.impl.XMLHandler.fatalError(XMLHandler.java:255)
    at org.apache.xerces.util.ErrorHandlerWrapper.fatalError(Unknown Source)
    at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
    at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
    at org.apache.xerces.impl.XMLEntityScanner.scanQName(Unknown Source)
    at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanStartElement(Unknown Source)
    at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
    at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
    at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source)
    at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source)
    at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
    at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
    at com.hp.hpl.jena.rdf.arp.impl.RDFXMLParser.parse(RDFXMLParser.java:142)
    at com.hp.hpl.jena.rdf.arp.JenaReader.read(JenaReader.java:158)
    at com.hp.hpl.jena.rdf.arp.JenaReader.read(JenaReader.java:145)
    at com.hp.hpl.jena.rdf.arp.JenaReader.read(JenaReader.java:215)
    at com.hp.hpl.jena.rdf.model.impl.ModelCom.read(ModelCom.java:197)
所以我想做一些尝试捕捉块。问题是当我执行此操作时,编译器返回:

异常org.xml.sax.SAXParseException从不在 对应的try语句

那么我如何才能聊天这个异常呢?我知道我只能捕获异常,但我不能确定问题发生在哪里

SAXParserException是一个“已检查的异常”,这意味着如果抛出,方法签名将被迫声明它。显然,您调用的方法没有声明它,因此您无法捕获它


看起来Jena实际上正在将该异常包装为“未检查的异常”(即扩展RuntimeException的异常)。此异常实际上是
JenaException
。因此,您可以为
JenaException
添加try/catch,然后使用
getCause()
查找Jena遇到的原始错误

您应该捕获JenaException而不是SAXParseException。然后尝试找出可能是SAXParseException的原因

如果您希望处理RDF XML输入的问题,有一种更直接的方法可以使用到Jena阅读器