【问题标题】:Flying Saucer - Can not caught IOException getting Stream Closed飞碟 - 无法捕获流关闭的 IOException
【发布时间】:2015-11-06 18:20:13
【问题描述】:

我正在引发内部 porpuses 的 CSS 文件加载错误,看看它是否能处理这样的问题。

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

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: 流关闭 [错误] 在 java.io.BufferedInputStream.getInIfOpen(BufferedInputStream.java:134) [错误] 在 java.io.BufferedInputStream.read1(BufferedInputStream.java:256) [错误] 在 java.io.BufferedInputStream.read(BufferedInputStream.java:317) [错误] 在 sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:264) [错误] 在 sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:306) [错误] 在 sun.nio.cs.StreamDecoder.read(StreamDecoder.java:158) [错误] 在 java.io.InputStreamReader.read(InputStreamReader.java:167) [错误] 在 org.xhtmlrenderer.css.parser.Lexer.zzRefill(Lexer.java:1634) [错误] 在 org.xhtmlrenderer.css.parser.Lexer.yylex(Lexer.java:1865) [错误] 在 org.xhtmlrenderer.css.parser.CSSParser.next(CSSParser.java:1807) [错误] 在 org.xhtmlrenderer.css.parser.CSSParser.la(CSSParser.java:1819) [错误] 在 org.xhtmlrenderer.css.parser.CSSParser.stylesheet(CSSParser.java:159) [错误] 在 org.xhtmlrenderer.css.parser.CSSParser.parseStylesheet(CSSParser.java:89) [错误] 在 org.xhtmlrenderer.context.StylesheetFactoryImpl.parse(StylesheetFactoryImpl.java:78) [错误] 在 org.xhtmlrenderer.context.StylesheetFactoryImpl.parse(StylesheetFactoryImpl.java:95) [错误] 在 org.xhtmlrenderer.context.StylesheetFactoryImpl.getStylesheet(StylesheetFactoryImpl.java:174) [错误] 在 org.xhtmlrenderer.context.StyleReference.readAndParseAll(StyleReference.java:123) [错误] 在 org.xhtmlrenderer.context.StyleReference.setDocumentContext(StyleReference.java:111) [错误] 在 org.xhtmlrenderer.pdf.ITextRenderer.setDocument(ITextRenderer.java:182) [错误] 在 org.xhtmlrenderer.pdf.ITextRenderer.setDocument(ITextRenderer.java:145) [错误] 在 osplus.mcp.frontend.servlet.RendererFilter.renderPdfByRenderer(RendererFilter.java:750) [错误] 在 osplus.mcp.frontend.servlet.RendererFilter.renderPdf(RendererFilter.java:697) [错误] 在 osplus.mcp.frontend.servlet.RendererFilter.handleReport(RendererFilter.java:1265) [错误] 在 osplus.mcp.frontend.servlet.RendererFilter.doFilter(RendererFilter.java:178) [错误] 在 com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:194) [错误] [内部类]

谁能帮我理解我怎样才能捕捉到这个异常?

谢谢。

问候

【问题讨论】:

    标签: java pdf ioexception flying-saucer xhtmlrenderer


    【解决方案1】:

    您可以像这样捕获特定异常:

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

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

    【讨论】:

    • 嗨@ergonaut,感谢您的帮助。问题是我们的代码在 try catch 代码块中,但即使这样,并且使用您的 catch,代码也不会进入 catch 块,我不知道为什么。在下面的帖子中,我将放一些我们正在生成的代码。
    猜你喜欢
    • 2018-04-07
    • 2011-05-28
    • 2011-03-14
    • 1970-01-01
    • 2013-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多