嗨,我正在用jena读取som文件:
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语句体中抛出。
那么我该怎么处理这个异常呢?我知道我可以抓住异常,但我不能确定问题发生在哪里。
发布于 2012-04-16 08:55:03
SAXParserException是一个“检查异常”,意味着如果方法签名抛出,它将被迫声明它。显然,您调用的方法没有声明它,因此无法捕获它。
看起来,Jena实际上是将该异常包装在一个“未检查异常”(即扩展RuntimeException的异常)中。这个例外实际上是JenaException。因此,您可以为一个JenaException添加一个try/catch,然后使用getCause()查找由Jena封装的原始错误。
发布于 2012-04-16 08:57:14
您应该捕获JenaException而不是SAXParseException。然后试着找出可能是SAXParseException的原因。
发布于 2012-04-16 21:54:48
如果您希望处理RDF输入中的问题,那么有一种更直接的方式将错误处理程序接口使用到Jena阅读器。
https://stackoverflow.com/questions/10171083
复制相似问题