在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子句。参见下面的示例:
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; } } }
来源:https://www.cnblogs.com/qingmiaokeji/p/12555359.html