3

我正在使用 JODConverter 将 .xls 和 .ppt 转换为 .pdf 格式。为此,我有类似的代码

try{
    //do something
    System.out.println("connecting to open office");
    OpenOfficeConnection connection = new SocketOpenOfficeConnection(8100);
    System.out.println("connection object created");
    connection.connect();
    System.out.println("connection to open office successful");
    //do something
    if(!successful)
      throw new FileNotFoundException();
}catch(Exception e){
   System.out.println("hello here");
   System.out.println("Caught Exception while converting to PDF ");
   LOGGER.error("Error in converting media" + e.getMessage());
   throw new MediaConversionFailedException();
}finally{
   decode_pdf.closePdfFile();
   System.out.println("coming in finally");
  //do something here
}

我的输出:

connecting to open office
connection object created
coming in finally

PS返回方法的类型是void

这怎么可能 ?即使connection.connect() 中存在一些问题,它也会出现在catch 块中。使困惑

4

4 回答 4

5

也许抛出了一个错误。这仍然会导致 try 块未完成,catch Exception 块被忽略并调用 finally 块。

于 2011-06-29T07:24:45.010 回答
2

尝试捕捉Throwable并观察堆栈跟踪,可能会conection.connect()抛出一个Error(或其他也扩展的自定义类Throwable)。

于 2011-06-29T07:25:33.210 回答
1

如果发生了 Error 类型的错误,或者更糟的是 Throwable 类型的错误,那么您的 Exception 捕获处理程序将不会触发。您是否有可能遇到某种 VM 错误、OOM 或堆栈溢出?

如果是这样,这将解释您报告的输出。

于 2011-06-29T07:25:04.963 回答
0

根据OpenOfficeConnection接口的实现,可以预期各种类型的 throwable。这些 throwable 之一可能不会扩展java.lang.Exceptionjava.lang.Throwable试着抓住

于 2011-06-29T07:32:50.797 回答