首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法捕获SAXParseException

无法捕获SAXParseException
EN

Stack Overflow用户
提问于 2012-04-16 08:47:20
回答 3查看 2.3K关注 0票数 1

嗨,我正在用jena读取som文件:

代码语言:javascript
复制
    InputStream in = FileManager.get().open(adress);
    model.read(in, adress);

第二行中的问题,有时会抛出SAXParseException:

代码语言:javascript
复制
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语句体中抛出。

那么我该怎么处理这个异常呢?我知道我可以抓住异常,但我不能确定问题发生在哪里。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-04-16 08:55:03

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

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

票数 1
EN

Stack Overflow用户

发布于 2012-04-16 08:57:14

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

票数 1
EN

Stack Overflow用户

发布于 2012-04-16 21:54:48

如果您希望处理RDF输入中的问题,那么有一种更直接的方式将错误处理程序接口使用到Jena阅读器。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10171083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档