JAva 7異常処理の強化
1731 ワード
Java 7リリースでは、oracleは例外処理メカニズムにもいくつかの良い変更をしました.これらは主に改良されたcatchブロックと余分なthrows句である.彼らがどのように変わったのか見てみましょう.
この機能では、単一のcatchブロックで複数の例外をキャプチャできます.Java 7の前には、各catchブロックで1つの例外しか取得できません.希望する例外リストを指定するには、縦線('|')文字を使用します.Javaプログラムは、単一のcatchブロックで複数の例外をキャプチャできます.
1つの
この機能により、メソッド宣言で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
パラメータ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;
}
}
}