Java应用程序在BufferedImage之后关闭而不抛出异常

时间:2016-12-21 17:44:47

标签: java windows bufferedimage

我有一个奇怪的问题,我甚至无法确定背后的逻辑,更不用说如何解决。我有一个屏幕保护程序应用程序,我正在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"是,所以我非常有信心在上述行中发生了辍学。

有什么想法吗?非常感谢!

1 个答案:

答案 0 :(得分:0)

嗯,这是不可能的,因为你违反了严格的规则:永远不要把捕获区留空。

标准catch块应该打印堆栈跟踪:

catch(Exception e)  {
    e.printStackTrace();
}

这应该会为您提供足够的提示。