在Java 7發行版中,oracle在異常處理機制上也做了一些不錯的更改。這些主要是 改進的catch塊 和 多餘的throws子句 。讓我們看看他們是如何改變的。 1.改進了Java 7中的catch塊 在此功能中,現在您可以 在單個catch塊中捕獲多個異常 。在Java 7之前,您只能在每個c ...
在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;
}
}
}