我有一个静态方法用于通过itext使用元数据从PDF获取标题,该方法用作主要任务的一小部分。
我注意到一条莫名其妙的路径,我缩小到这部分代码。具体来说,在我实例化PdfReader的行中,该进程不会抛出异常或继续执行print语句。实际上,它会将我的所有for循环清除到程序的最高级别,并且就像没有发生任何事情并完成任务一样。
try {
System.out.println("Entered method");
PdfReader myReader = new PdfReader(file.getAbsolutePath());
System.out.println("Reader instantiated"); //if no issues, prints to console
Map<String, String> info = myReader.getInfo();
System.out.println(info.get("Title"));
return info.get("Title");
} catch (IOException e) {
System.out.println("PdfReader throws exception"); //if issues, prints to console
e.printStackTrace();
}
除非我弄错了,否则当我的方法执行这组代码时,要么&#34; Reader Instantiated&#34;或&#34; PdfReader抛出异常&#34;打印到控制台。
都不会发生。相反,该进程会跳过它当前所在的每个if / for / while循环并结束任务。
我想知道是否有人可以向我解释发生了什么以及我该如何解决这个问题?
答案 0 :(得分:0)
在奇怪的事件中搜索,是的,捕捉Throwable
阻止线程拯救。我以前从未见过这样的东西。问题背后的原因是PDF受密码保护,因此getInfo()
失败。