try{
IMAGE = ImageIO.read(getClass().getResource("Images/image.png"));
}
catch (IOException ex){
JOptionPane.showMessageDialog(null, "<html>Error<br>Missing images</html>" ,"Error",JOptionPane.ERROR_MESSAGE);
System.exit(1);
}
catch block 不起作用,我仍然收到默认消息:
Exception in thread "main" java.lang.IllegalArgumentException: input == null!
at javax.imageio.ImageIO.read(Unknown Source)
at KPK.<init>(KPK.java:40)
at Main.main(Main.java:22)
如何捕获这个异常?
最佳答案
- 首先,不要捕获
IllegalArgumentException
。这个错误表明你的代码中有一些非常糟糕的东西,不应该被真正捕获。请参阅 Jon Skeet 的回答 here了解更多关于为什么这不好的信息。相反,你应该: - 在读取图像的行中分隔代码。
- 首先从
getResource()
获取URL - 检查是否为空
- 如果为 null,则不要使用它调用
ImageIO.read(...)
。 - 您应该学习并遵循 Java 命名约定,以便其他人更好地理解您的代码。例如,不要将非常量变量大写。
即,
try{
URL imgUrl = getClass().getResource(IMAGE_PATH); // path should be a constant
// or variable, not a String literal
if (imgUrl == null) {
// show error and get the heck out of here
} else {
image = ImageIO.read(imgUrl);
}
} catch (IOException ex){
JOptionPane.showMessageDialog(null, "<html>Error<br>Missing images</html>" ,
"Error",JOptionPane.ERROR_MESSAGE);
System.exit(1);
}
关于Java捕获图像未找到异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20254615/