Летающая тарелка - Не могу поймать IOException, получая стрим закрыт

Я провоцирую ошибку загрузки файла CSS для внутренних частей, чтобы посмотреть, справится ли она с такой проблемой.

Вот код, который у меня есть, и когда он прибывает в renderer.setDocument (), метод из класса ITextRenderer, он выдает исключение, не вызывающее смеха, которое нам нужно перехватить, и даже в этом случае он продолжает выполнять renderer.layout () а затем, наконец, {} заблокировать.

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: поток закрыт [err] в java.io.BufferedInputStream.getInIfOpen(BufferedInputStream.java:134) [err] в java.io.BufferedInputStream.read1(BufferedInputStream.java:256) [err] в java.io.BufferedInputStream.read(BufferedInputStream.java:317) [err] в sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:264) [err] в sun.nio.cs.StreamDecoder.implRead(StreamDecoder).java:306) [err] в sun.nio.cs.StreamDecoder.read(StreamDecoder.java:158) [err] в java.io.InputStreamReader.read(InputStreamReader.java:167) [err] в org.xhtmlrenderer.css.parser.Lexer.zzRefill(Lexer.java:1634) [err] в org.xhtmlrenderer.css.parser.Lexer.yylex(Lexer.java:1865) [err] в org.xhtmlrenderer.css.parser.CSSParser.next(CSSParser.java:1807) [err] в org.xhtmlrenderer.css.parser.CSSParser.la(CSSParser.java:1819) [err] в org.xhtmlrenderer.css.parser.CSSParser.stylesheet(CSSParser.j:159) [err] в org.xhtmlrenderer.css.parser.CSSParser.parseStylesheet(CSSParser.java:89) [err] в org.xhtmlrenderer.context.StylesheetFactoryImpl.parse(StylesheetFactoryImpl.java:78) [err] at org.xhtmlrenderer.context.StylesheetFactoryImpl.parse(StylesheetFactoryImpl.java:95) [err] java:174) [err] at org.xhtmlrenderer.context.StyleReference.readAndParseAll(StyleReference.java:123) [err] at org.xhtmlrenderer.context.StyleReference.setDocumentContext(StyleReference.java:111 или). err.xhtmlrenderer.pdf.ITextRenderer.setDocument(ITextRenderer.java:182) [err] at org.xhtmlrenderer.pdf.ITextRenderer.setDocument(ITextRenderer.java:145) [err] в файле osplusnd.rf.trp. RendererFilter.java:750) [err] в osplus.mcp.frontend.servlet.RendererFilter.renderPdf(RendererFilter.java:697) [err] в osplus.mcp.frontend.servlet.RendererFilter.handleReport(RendererFilter) [err] на osplus.mcp.frontend.servlet.RendererFilter.doFilter(RendererFilter.java:178) [err] на com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:194) [ошибка] в [внутренних классах]

Может ли кто-нибудь помочь мне понять, как я могу поймать это исключение?

Спасибо.

С уважением

1 ответ

Вы можете поймать определенное исключение как это:

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

Однако, если вы не можете перехватить исключение, это может быть связано с тем, что API не позволяет вам это сделать, а вместо этого просто сбрасывает стек и пытается обработать само исключение. Дважды проверьте переданные параметры, чтобы убедиться, что вы не можете отфильтровать условия ошибки самостоятельно. Если вы используете продвинутую IDE (например, Eclipse), вы должны быть в состоянии установить точку останова при возникновении IOException, чтобы вы могли проанализировать, что происходит. Также вы можете попробовать и следовать исходному коду, чтобы увидеть, что он говорит вам что-нибудь. Кроме того, если вы не можете решить эту проблему, попробуйте связаться с авторами кода.

Другие вопросы по тегам