Java捕获图像未找到异常

时间:2013-11-27 22:50:12

标签: 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块无效,我仍然收到默认消息:

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)

我怎样才能抓住这个例外?

2 个答案:

答案 0 :(得分:3)

  1. 首先,不要抓住IllegalArgumentException。此错误表明您的代码中存在非常糟糕的情况,并且不应该被捕获。请参阅Jon Skeet的回答here,了解更多关于为何这样做的原因。相反,你应该:
  2. 分隔您阅读图片的行中的代码。
  3. 首先从getResource()
  4. 获取网址
  5. 检查是否为空
  6. 如果为null,则不使用ImageIO.read(...)调用它。
  7. 您应该学习并遵循Java命名约定,以便其他人更好地理解您的代码。例如,不要将非常量变量大写。
  8. 即,

    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);
    }
    

答案 1 :(得分:-1)

catch (IOException | IllegalArgumentException ex)

此外,首先创建图片... Image im = null;然后使用文件... im = ImageIO.read(new File("YOUR IMAGE FILE PATH"));