如何同时处理 IOException 和 IIOException
Posted
技术标签:
【中文标题】如何同时处理 IOException 和 IIOException【英文标题】:How to handle both IOException and IIOException at the same time 【发布时间】:2016-09-16 09:09:41 【问题描述】:谁能帮我解决如何同时捕获 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());
【问题讨论】:
注意:如果t == null
(question),t instanceof IOException
将返回 false,因此您无需先检查。
【参考方案1】:
你有没有尝试过这样的事情
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());
【讨论】:
【参考方案2】:这就是为什么我们有单独的 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);
【讨论】:
以上是关于如何同时处理 IOException 和 IIOException的主要内容,如果未能解决你的问题,请参考以下文章
解决Caused by: java.io.IOException: java.io.IOException: error=12, Cannot allocate memory
Proguard 错误:“处理任务 java.io.IOException 时出现异常:请先更正上述警告”
IOException: UT010029: Stream is closed 异常处理