Java捕获图像未找到异常

标签 java exception illegalargumentexception

    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)

如何捕获这个异常?

最佳答案

  1. 首先,不要捕获IllegalArgumentException。这个错误表明你的代码中有一些非常糟糕的东西,不应该被真正捕获。请参阅 Jon Skeet 的回答 here了解更多关于为什么这不好的信息。相反,你应该:
  2. 在读取图像的行中分隔代码。
  3. 首先从getResource()获取URL
  4. 检查是否为空
  5. 如果为 null,则不要使用它调用 ImageIO.read(...)
  6. 您应该学习并遵循 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/

相关文章:

java - IllegalArgumentException 输入 == null

java - 如何删除内部类ActionListener?

java - 如何重写hashcode和equals方法以避免在java中的HashSet中添加重复的字符串?

java - 在 Byte Buddy 中禁用标识符验证

java - 使用 Jackcess 在 Java 中创建新的 MS Access 文件

exception - BizTalk 从 "Exception thrown from: segment X progress Y"开始通信的分段和进度是什么意思

java - Android MediaMetaDataReceiver.setDataSource 上的 IllegalArgumentException

Java 分割字符串的空部分

c# - 捕获多个自定义FaultException类型

java - 非法参数异常 : Failed to find configured root