java skips catch子句直接跳到apache pdfbox中

时间:2013-02-23 03:30:30

标签: java apache try-catch pdfbox finally

我的手在我的头发上。

我正在使用Apache PDFBox,因为我想在JAVA中逐行阅读pdf文件并稍后处理内容。但是我有以下问题.. 我在一个单独的java程序(在main方法中)中使用了下面的代码,它在那里工作正常。但是,当我在我的tomcat服务器applet中使用它与石英调度程序一起出现问题时,我无法弄清楚原因。请记住,我将工作单独测试程序中的下面的行复制粘贴到我自己的大项目中,所以它是完全相同的代码。然而,在我更大的项目中,程序一直运行到String x1 = .. line,我放了一个断点。当我试图跨过它并没有'给出任何错误,控制台输出或任何东西,并跳过catch子句直接到最后。我在catch子句中加入了断点,它们没有被触发。

这是我的代码:

    PDFTextStripper stripper;
    PDDocument doc = null;      
    try{
      doc = PDDocument.load("00026614_F_21Jan2013-18Feb2013.pdf");
      stripper = new PDFTextStripper();
      String x1= stripper.getText(doc);    //SOMETHING GOES WRONG HERE
      //break up the file content returned as a string into individual lines
      List<String> ans= Arrays.asList(x1.split("\r\n"));//THIS IS NEVER REACHED
    }
    catch(Exception e){
        e.printStackTrace();    //THIS IS NEVER REACHED EITHER
    }
    finally{
       if(doc!=null) //IT GOES FROM STRING X1 STRAIGHT TO HERE.
       doc.close();
    }

我得到的唯一输出来自LOG4J,必须为程序的其他部分初始化,最后几行输出

34212 [DefaultQuartzScheduler_Worker-1] DEBUG org.apache.pdfbox.util.PDFStreamEngine  - processing substream token: PDFOperator{Tm}
34212 [DefaultQuartzScheduler_Worker-1] DEBUG org.apache.pdfbox.util.PDFStreamEngine  - processing substream token: COSName{ttf0}
34212 [DefaultQuartzScheduler_Worker-1] DEBUG org.apache.pdfbox.util.PDFStreamEngine  - processing substream token: COSInt{10}
34212 [DefaultQuartzScheduler_Worker-1] DEBUG org.apache.pdfbox.util.PDFStreamEngine  - processing substream token: PDFOperator{Tf}

现在让我烦恼的是如何才能弄清楚该通话中出了什么问题?就像我说的,如果我把代码放在一个单独的java程序中它运行正常..但我“无法获得任何错误输出或捕获任何异常(我试图捕获异常,即使它应该给IOException和是的我我也试过了。

我希望你们中的任何一个人都知道怎么做。亲切的问候

1 个答案:

答案 0 :(得分:4)

看起来有人已经回答了这个问题,但是为错误添加了一个问题就可以解决我遇到的类似问题。

我添加了这个&#39; catch&#39; (错误)在“赶上”之后例外:

catch (Error err){
    err.printStackTrace();
    throw (err);
}