0

このような問題を処理するかどうかを確認するために、内部ポーパスの CSS ファイル読み込みエラーを引き起こしています。

私が持っているコードはこれで、ITextRenderer クラスのメソッドである renderer.setDocument() に到達すると、キャッチする必要があるキャッチできない例外がスローされます。この場合でも、renderer.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: ストリームが閉じられました [err] java.io.BufferedInputStream.getInIfOpen(BufferedInputStream.java:134) で [err] java.io.BufferedInputStream.read1(BufferedInputStream.java:256) で [err] java.io.BufferedInputStream.read(BufferedInputStream.java:317) で [エラー] sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:264) で [エラー] 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) [エラー] 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) [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) [エラー] osplus.mcp.frontend.servlet.RendererFilter.renderPdfByRenderer(RendererFilter.java:750) で [エラー] 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) [エラー] com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:194) [err] at [internal classes]

この例外をキャッチする方法を理解するのを手伝ってくれる人はいますか?

ありがとうございました。

よろしく

4

1 に答える 1

1

次のような特定の例外をキャッチできます。

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

ただし、例外をキャッチできない場合は、API で許可されていないことが原因である可能性があり、代わりにスタックをダンプして、例外自体を処理しようとします。渡されたパラメーターを再確認して、エラー条件を自分で除外できないことを確認してください。高度な IDE (Eclipse など) を使用している場合は、何が起こっているのかを分析できるように、IOException がスローされたときにブレークポイントを設定できるはずです。また、ソースコードをたどってみて、それが何かを伝えていることを確認することもできます. さらに、解決できない場合は、コードの作成者に連絡してみてください。

于 2015-11-06T18:23:10.180 に答える