使用“ImageIO.write()”API调用我得到空指针异常

ImageIO.write() API调用时,我得到NullPointerException当我通过一个不存在的路径如"\\abc\abc.png"。我通过不存在的路径特意来测试一些而是获得FileNotFoundException,我得到NPE。这是为什么?使用“ImageIO.write()”API调用我得到空指针异常

ImageIO.write() API应该扔IOException,但不要为什么我得到NPE

我使用异常消息字符串在用户的消息框中显示它,但在这种情况下,NPE.getLocalizedMessage()返回空字符串,因此弹出窗口是空的,只有一个图标。

回答:

正确,虽然。例如,下面的代码:

public static void main(String[] args) throws IOException { 

BufferedImage image = new BufferedImage(32, 32, BufferedImage.TYPE_INT_ARGB);

File out = new File("\\\\ABC\\abc.png");

ImageIO.write(image, "png", out);

}

java.io.FileNotFoundException: \\ABC\abc.png (The network path was not found) 

at java.io.RandomAccessFile.open(Native Method)

at java.io.RandomAccessFile.<init>(RandomAccessFile.java:233)

at javax.imageio.stream.FileImageOutputStream.<init>(FileImageOutputStream.java:69)

at com.sun.imageio.spi.FileImageOutputStreamSpi.createOutputStreamInstance(FileImageOutputStreamSpi.java:55)

at javax.imageio.ImageIO.createImageOutputStream(ImageIO.java:419)

at javax.imageio.ImageIO.write(ImageIO.java:1530)

at javaapplication145.JavaApplication145.main(JavaApplication145.java:24)

Exception in thread "main" java.lang.NullPointerException

at javax.imageio.ImageIO.write(ImageIO.java:1538)

at javaapplication145.JavaApplication145.main(JavaApplication145.java:24)

的原因是FileImageOutputStreamSpi.createOutputStreamInstance燕子FileNotFoundException异常,然后NPE来当ImageIO.write试图关闭流是没开。

为什么异常被抑制,残酷,我不知道。代码片段是

try { 

return new FileImageOutputStream((File)output);

} catch (Exception e) {

e.printStackTrace();

return null;

}

唯一的解决办法是试图使用的ImageIO之前验证路径

回答:

我发现对于NPE在这个线程中提到的问题的原因。彼得赫尔说得绝对正确

public static void main(String[] args) throws IOException { BufferedImage image = new BufferedImage(32, 32, BufferedImage.TYPE_INT_ARGB); File out = new File("\\\\ABC\\abc.png"); ImageIO.write(image, "png", out); } 

这正是我的代码的样子。感谢彼得突出显示。

此问题的原因是新的FileImageOutputStream()抛出FileNotFoundException,但是一些Sun程序员去了并捕获了异常,打印了堆栈跟踪并返回null。这就是为什么不能再捕捉FileNotFoundException - 它已经打印出来了。不久之后,返回的null值将导致NullPointerException异常,这是从我调用的方法抛出的异常。当印刷异常的堆栈跟踪,我可以看到FileNotFoundException异常与NPE沿上面提到的原因。

-Nayan

以上是 使用“ImageIO.write()”API调用我得到空指针异常 的全部内容, 来源链接: utcz.com/qa/259141.html

回到顶部