gpt4 book ai didi

java - Flying Saucer - 无法捕获 IOException 正在关闭流

转载 作者:行者123 更新时间:2023-12-01 10:57:15 27 4
gpt4 key购买 nike

我正在为内部海豚引发 CSS 文件加载错误,看看它是否可以处理这样的问题。

我的代码是这样的,当它到达 renderer.setDocument()(ITextRenderer 类的一个方法)时,它会抛出一个无法捕获的异常,我们需要捕获该异常,即使在这种情况下它也会继续渲染器。 layout() 然后到finally{} block 。

private ITextRenderer renderPdfByRenderer(
final ITextRenderer renderer,
...
{
...

try {
...
org.w3c.dom.Document xhtmlContent = createDocument(contentReader);

...

renderer.setDocument(xhtmlContent, FacesContextHelper.getRequest().getRequestURL().toString());

...

renderer.layout();

....

} catch (final SAXException e) {
throw getExceptionOnRender(e);
} catch (final ParserConfigurationException e) {
throw getExceptionOnRender(e);
} catch (final DocumentException e) {
throw getExceptionOnRender(e);
} catch (IOException e) {
e.printStackTrace();
throw getExceptionOnRender(e);
} catch (final ServletException e) {
throw getExceptionOnRender(e);
}
finally{
...
}
}

[err] java.io.IOException: Stream closed [err] at java.io.BufferedInputStream.getInIfOpen(BufferedInputStream.java:134) [err] at java.io.BufferedInputStream.read1(BufferedInputStream.java:256) [err] at java.io.BufferedInputStream.read(BufferedInputStream.java:317) [err] at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:264) [err] at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:306) [err] at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:158) [err] at java.io.InputStreamReader.read(InputStreamReader.java:167) [err] at org.xhtmlrenderer.css.parser.Lexer.zzRefill(Lexer.java:1634) [err] at org.xhtmlrenderer.css.parser.Lexer.yylex(Lexer.java:1865) [err] at org.xhtmlrenderer.css.parser.CSSParser.next(CSSParser.java:1807) [err] at org.xhtmlrenderer.css.parser.CSSParser.la(CSSParser.java:1819) [err] at org.xhtmlrenderer.css.parser.CSSParser.stylesheet(CSSParser.java:159) [err] at org.xhtmlrenderer.css.parser.CSSParser.parseStylesheet(CSSParser.java:89) [err] at org.xhtmlrenderer.context.StylesheetFactoryImpl.parse(StylesheetFactoryImpl.java:78) [err] at org.xhtmlrenderer.context.StylesheetFactoryImpl.parse(StylesheetFactoryImpl.java:95) [err] at org.xhtmlrenderer.context.StylesheetFactoryImpl.getStylesheet(StylesheetFactoryImpl.java:174) [err] at org.xhtmlrenderer.context.StyleReference.readAndParseAll(StyleReference.java:123) [err] at org.xhtmlrenderer.context.StyleReference.setDocumentContext(StyleReference.java:111) [err] at org.xhtmlrenderer.pdf.ITextRenderer.setDocument(ITextRenderer.java:182) [err] at org.xhtmlrenderer.pdf.ITextRenderer.setDocument(ITextRenderer.java:145) [err] at osplus.mcp.frontend.servlet.RendererFilter.renderPdfByRenderer(RendererFilter.java:750) [err] at osplus.mcp.frontend.servlet.RendererFilter.renderPdf(RendererFilter.java:697) [err] at osplus.mcp.frontend.servlet.RendererFilter.handleReport(RendererFilter.java:1265) [err] at osplus.mcp.frontend.servlet.RendererFilter.doFilter(RendererFilter.java:178) [err] at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:194) [err] at [internal classes]

任何人都可以帮助我了解如何捕获此异常吗?

谢谢。

问候

最佳答案

您可以捕获如下所示的特定异常:

try {
(ITextRenderer(a))setDocument(..)..
} catch (IOException ioe){
ioe.printStackTrace();
}

但是,如果您无法捕获异常,可能是因为 API 不允许您捕获异常,而它只是转储堆栈并尝试自行处理异常。仔细检查传入的参数,以确保您无法自行过滤掉错误条件。如果您使用的是高级 IDE(例如 Eclipse),您应该能够在抛出 IOException 时设置断点,以便您可以分析发生了什么。您也可以尝试按照 source code 进行操作看到它就会告诉你任何事情。此外,如果您无法解决该问题,请尝试联系代码的作者。

关于java - Flying Saucer - 无法捕获 IOException 正在关闭流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33573186/

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