1

インターセプトを使用して例外キャッチ コードを Java から Scala に変換するにはどうすればよいですか?

http://www.scalatest.org/getting_started_with_fun_suiteを読むと、例外をキャッチするときにインターセプトを使用することが推奨されるようです。以下の例外キャッチ コードでは、 assert 内の型をチェックするために Exception 型にアクセスする必要があります。

catch {
          case me : MyException => {
            assert(me.getDetail.getClass() === classOf[GenericException]);
          }
        }

これは、次のコードがコンパイラ エラーを引き起こすため、intercept を使用することはできないようです:「前方参照が値例外の定義を超えています」

これは、scala catch ブロックに変換されたものです。

        val exception = intercept[MyException] {
assert(exception.getDetail.getClass() === classOf[GenericException]);   
    }

エラーはオンラインで発生します

assert(exception.getDetail.getClass() === classOf[GenericException]);
4

1 に答える 1

1

あなたの定義exceptionは循環的です。あなたが望むものは:

val exception = intercept[MyException] {
   <your exception-throwing code here>
}

assert(exception.getDetail.getClass() === classOf[GenericException])
于 2012-12-17T17:33:44.337 に答える