2013-12-12 2 views
6

Мне нужно вызвать код scala из java, поэтому мне нужно сообщить компилятору, что определенный метод выдает определенные исключения. Это easy to do for one exception, но я изо всех сил пытаюсь объявить, что метод генерирует несколько исключений.Scala @ throws несколько исключений

Это не работает:

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

И, очевидно, и не делает это:

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

Вы пытались добавить несколько аннотаций @ @ throws? Дайте мне знать, если это сработает, и я добавлю в качестве ответа – cmbaxter

+0

@cmbaxter Я только что попробовал, когда увидел ваш комментарий, и он работает. Пожалуйста, добавьте его как ответ, и я соглашусь – goncalopp

ответ

9

Рассматривая конструктор для @throws, требуется один аргумент Class[_]. Учитывая это, вы не сможете использовать обозначение массива для представления нескольких классов. Таким образом, альтернатива заключается в том, чтобы добавить аннотацию несколько раз, по одному для каждого поддерживаемого исключения:

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

@throws определяется следующим образом:

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

Таким образом, вы можете только поставить одно исключение для аннотации. Добавьте одну аннотацию к исключению.

Смежные вопросы