gpt4 book ai didi

java - 无法捕获 SAXParseException

转载 作者:行者123 更新时间:2023-11-30 04:49:25 28 4
gpt4 key购买 nike

您好,我正在使用 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)

所以我想做一些 try catch block 。问题是当我这样做时,编译器返回:

exception org.xml.sax.SAXParseException is never thrown in body of corresponding try statement

那么我怎样才能捕获这个异常呢?我知道我只能捕获异常,但我无法确定问题发生在哪里

最佳答案

SAXParserException 是一个“检查异常”,这意味着如果方法签名抛出异常,则必须强制声明它。显然,你调用的方法没有声明它,所以你无法捕获它。

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

关于java - 无法捕获 SAXParseException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10171083/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com