5

jdk1.6でコードを可能にするJavaの代替手段はありますか? jdk 1.7でも同じことが可能であることは知っていますが、jdk1.6で立ち往生しています。

以下のコードは複数の例外をキャッチすることができ、これらの例外を処理してデータベース テーブルに追加したいと考えています。3 つの例外すべてについて、私の例外処理ロジックは変わりません。複数の catch ブロックに対して同じコードを繰り返したくありません。

try{
      //do somthing here
    }catch(CustomException1 ex1 | CustomException2 ex2 | CustomException3 ex3){
          // Here goes common Exception handing logic.

   }
4

4 に答える 4

2

この構文は Java 1.7 で追加されました。これは、以前はきれいに行うことが困難だったためです。

あなたができることがいくつかあります:

  • CustomExceptionX の一般的な基本クラスに対して単一の catch を使用します (通常は例外ですが、これらのいずれかが実際にエラーである場合は、Throwable に移動する必要がある場合があります)。欠点は、RuntimeExceptions もキャッチするため、Subin が提案するようなランタイム チェックを行う必要があることです。CustomExceptionX を定義している場合は、この使用法に共通のスーパークラスを定義でき、実行時チェックを行う必要はありません。
  • 共通ロジックを関数に入れ、両方のキャッチでこの関数を呼び出します。この方法では、唯一の重複は関数への呼び出しになります。
于 2013-11-06T03:34:20.283 に答える
0

私はついにこのコードを進めました、

  try{ 
      //do somthing here 
    }catch(SuperExceptionClass ex){ 

     if (ex instanceof CustomException1 || ex instanceof CustomException2 ||  ex instanceof CustomException2) { 
         // Here goes common Exception handing logic.
     } else { 
         throw ex;
     }

   }
于 2013-11-06T06:23:20.183 に答える