如何同时处理IOException和IIOException

时间:2016-05-19 13:03:04

标签: java ioexception javax.imageio

任何人都可以帮我解决如何捕获IOException和IIOException,因为我需要区分图像格式和图像加载错误。

这样的东西不起作用,因为我没有捕获IOException。

catch (IIOException e)
{
  System.out.println("Invalid image format: " + e.getMessage());

  Throwable t = e.getCause();
  if ((t != null) && (t instanceof IOException)) {
    System.out.println("Unable to load image: " + e.getMessage());
  }
}

2 个答案:

答案 0 :(得分:3)

这就是为什么我们有单独的catch语句:

try {

}
catch (ExceptionTypeA e1) { }
catch (ExceptionTypeB e2) { }


  try {
      bim=ImageIO.read(new File(....));
      int[] a={2, 2, 3,4 };
      a[7]=4;
  }
  catch (ArrayIndexOutOfBoundsException ex2) { System.err.println("error 2 "+ex2); }
  catch (Exception ex) { System.err.println("error 1 "+ex); }

例外情况需要按特异性顺序给出;即在你的情况下,

  catch (IIOException ex) { System.err.println("error 1 "+ex); }
  catch (IOException ex2) { System.err.println("error 2 "+ex2); }

答案 1 :(得分:0)

你有没有试过这样的东西

catch(IOException e)
    {
        if(e instanceof IIOException)
        {
            System.out.println("Invalid image format: " + e.getMessage());
        }else
        {
            System.out.println("Unable to load image: " + e.getMessage());
        }
    }