JAva 7異常処理の強化

1731 ワード

Java 7リリースでは、oracleは例外処理メカニズムにもいくつかの良い変更をしました.これらは主に改良されたcatchブロックと余分なthrows句である.彼らがどのように変わったのか見てみましょう.

1.Java 7のcatchブロックの改良


この機能では、単一のcatchブロックで複数の例外をキャプチャできます.Java 7の前には、各catchブロックで1つの例外しか取得できません.希望する例外リストを指定するには、縦線('|')文字を使用します.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;
}

1つのcatchブロックが1つ以上の異常タイプを処理する場合、catchパラメータは暗黙的なfinalである.この例では、catchパラメータexfinalであるため、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;
        }
    }
}