2015-11-06 2 views
0

Я провожу ошибку загрузки файла CSS для внутренних porpuses, чтобы увидеть, справляется ли она с такой проблемой.Flying Saucer - не удалось поймать IOException получение потока закрыто

Код, который у меня есть, и когда он приходит к методу renderer.setDocument(), из класса ITextRenderer, он бросает непостижимую экслюмиссию, которую нам нужно поймать, и даже в этом случае она продолжает визуализировать .layout(), а затем, наконец, {} 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: Поток закрыт [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] 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] в 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 [внутренние классы]

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

спасибо.

С уважением

ответ

1

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

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

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

+0

Привет, @ergonaut, благодарю вас за помощь. Дело в том, что наш код находится внутри блока кода catch try, но даже с этим и с вашим уловом код не попадает в блок catch, и я не знаю почему. В моем посте ниже я поставлю немного кода, который мы производим. –

Смежные вопросы