2013-12-12 16 views
6

Ich muss Scala-Code von Java aufrufen, also muss ich dem Compiler sagen, dass eine bestimmte Methode bestimmte Ausnahmen auslöst. Das ist easy to do for one exception, aber ich habe Mühe zu erklären, dass eine Methode mehrere Ausnahmen auslöst.Scala @throws mehrere Ausnahmen

funktioniert das nicht:

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

Und, natürlich, auch nicht das:

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

Haben Sie versucht, stattdessen mehrere der '@ throws' Annotation hinzuzufügen? Lass es mich wissen, wenn das funktioniert und ich werde als Antwort hinzufügen – cmbaxter

+0

@cmbaxter Ich hatte es gerade versucht, als ich Ihren Kommentar gesehen habe, und es funktioniert. Bitte fügen Sie es als Antwort hinzu und ich werde akzeptieren – goncalopp

Antwort

9

Beim Betrachten des Konstruktors für @throws, dauert es ein einziges Class[_] Argument. Wenn Sie dies berücksichtigen, können Sie die Array-Notation nicht zur Darstellung mehrerer Klassen verwenden. Also die Alternative, die Annotation mehrfach zu verwenden, eine für jede unterstützte Ausnahme:

4

@throws wie folgt definiert ist:

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

So können Sie nur setzen Eine Ausnahme pro Annotation. Fügen Sie eine Anmerkung pro Ausnahme hinzu.