2013-12-12 10 views
6

私はスカラーコードをjavaから呼び出す必要があるので、特定のメソッドが特定の例外をスローすることをコンパイラーに伝える必要があります。これはeasy to do for one exceptionですが、私はメソッドが複数の例外をスローすることを宣言するのに苦労しています。スカラは複数の例外を投げる

これは動作しません:

@throws(classOf[ ExceptionA ], classOf[ExceptionB]) 

そして、明らかに、どちらもこの処理を行います。

@throws(classOf[ ExceptionA , ExceptionB]) 
+0

代わりに '@ @ throws'アノテーションを複数追加しようとしましたか?これが動作すれば私に教えてください。私は答えとして追加します。 – cmbaxter

+0

@cmbaxterあなたのコメントを見たときに私はちょうど試してみました。回答として追加してください – goncalopp

答えて

9

@throwsのコンストラクタを見ると、1つのClass[_]引数が必要です。これを考慮すると、配列表記を使用して複数のクラスを表すことはできません。したがって、サポートされている例外ごとに1つずつ、注釈を複数回追加することもできます。

@throws(classOf[ExceptionA]) 
@throws(classOf[ExceptionB]) 
4

@throwsは、以下のように定義されます。

class throws[T <: Throwable](cause: String = "") extends scala.annotation.StaticAnnotation {...} 

だからあなただけ置くことができますアノテーションごとに1つの例外があります。例外ごとに1つの注釈を追加します。

関連する問題