我有一个奇怪的问题,我甚至无法确定背后的逻辑,更不用说如何解决。我有一个屏幕保护程序应用程序,我正在Mac上的NetBeans上写。我现在正试图将代码移植到Windows 10机器上。该应用程序运行,但似乎退出,而不会抛出异常,当它到达缓冲图像的点。有时它缓冲得很好,一切都是AOK。但是,在其他时候它会达到bi = ImageIO.read(imageList[n]);
,然后NetBeans很高兴地宣布代码已经完成并退出,就像没有发生任何不幸事件一样。
int done = 0;
BufferedImage bi = null;
while (done == 0) {
System.out.println("Entered loop");
bi = ImageIO.read(imageList[n]);
if (bi == null) {
System.out.println("Image null");
} else {
System.out.print("I tried to buffer but failed");
}
int biw = bi.getWidth();
System.out.println("Image width = " + biw);
if (bi != null) {
System.out.println("Image buffered");
done = 1;
}
System.out.println("done=" + done);
}
我试图设置的错误消息,即"I've tried to buffer but failed"
永远不会被打印,但是"Entered loop"
是,所以我非常有信心在上述行中发生了辍学。
有什么想法吗?非常感谢!
答案 0 :(得分:0)
嗯,这是不可能的,因为你违反了严格的规则:永远不要把捕获区留空。
标准catch块应该打印堆栈跟踪:
catch(Exception e) {
e.printStackTrace();
}
这应该会为您提供足够的提示。