原文
7.2.2 捕获多个异常
在一个 try 语句块中可以捕获多个异常类型,并对不同类型的异常做出不同的处理。为每个异常类型使用一个单独的 catch 子句,如下例所示:
try{
code that might throw exceptions
}catch(FileNotFoundException e){
// 处理此异常
}catch(UnknownHostException e){
处理UnknownHostException
}catch(IOException e{
处理IO异常
}
异常对象可能包含有关异常性质的信息。要想获得这个对象的更多信息,可以尝试使用
e.getMessage();
得到详细的错误消息(如果有的话),或者使用
e.getClass().getName()
得到异常对象的实际类型
在Java 7中,同一个catch子句中可以捕获多个异常类型。例知,假设对应缺少文件和未知主机异常的动作是一样的,就可以合井 catch 子句:
try{
code that might throw exceptions
}catch(FileNotFoundException | UnknownHostException e){
// 处理FileNotFoundException 或 UnknownHostException
}catch(IOException e{
处理IO异常
}
只有当捕获的异常类型彼此之间不存在子类关系时才需要这个特性。
注释: 捕获多个异常时,异常变量隐含为 final 变量。例如,在以下子句体中不能为e赋一个不同的值:
catch (FileNotFoundException | UnknownHostException e) {...}
注释:捕获多个异常不仅会让你的代码看起来更简单,还会更高效。生成的字节码只包含对应公共 catch 子句的一个代码块。
本文暂时没有评论,来添加一个吧(●'◡'●)