Java 7 – 异常处理增强
Java 7 – 异常处理增强
在 Java 7 发行版中,oracle 在异常处理机制上也做了一些不错的更改。 主要是改进的 catch 块和冗余throws
子句。 让我们看看他们是如何改变的。
1. Java 7 中改进的catch
块
在此特性中,现在您可以在单个catch
块中捕获多个异常。 在 Java 7 之前,您只能在每个catch
块中仅捕获一个异常。
要指定期望的异常列表,请使用竖线(|
)。
Java 程序在单个 catch 块中捕获多个异常。
try
{
//Do some processing which throws NullPointerException;
throw new NullPointerException();
}
//You can catch multiple exception added after 'pipe' character
catch( NullPointerException npe | IndexOutOfBoundsException iobe )
{
throw ex;
}
如果
catch
块处理多个异常类型,则catch
参数隐式为final
。 在此示例中,catch
参数ex
为final
,因此您无法在catch
块内为其分配任何值。
2. Java 7 中的冗余throws
子句
此特性使您免于在方法声明中使用throws
子句。 请参见下面的示例:
public class MultipleExceptionsInCatchBlock {
public static void main(String[] args)
{
sampleMethod();
}
public static void sampleMethod()
//throws Throwable //No need to do this
{
try
{
//Do some processing which throws NullPointerException; I am sending directly
throw new NullPointerException();
}
//You can catch multiple exception added after 'pipe' character
catch(NullPointerException | IndexOutOfBoundsException ex)
{
throw ex;
}
//Now method sampleMethod() do not need to have 'throws' clause
catch(Throwable ex)
{
throw ex;
}
}
}
Java 运行时足够智能,可以在调用方方法中标识确切的异常类。
如果您使用 Java 6 或更早的版本编译上述代码,它将产生编译错误并要求您声明 throws 子句。
我认为,对于 Java 开发人员而言,首先的改进绝对是一个不错的选择。 但是,我真的没有看到第二个补充如此重要。 再次,这是我的看法。
评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果