2013-12-12 11 views
6

Devo chiamare il codice scala da java, quindi ho bisogno di dire al compilatore che un certo metodo lancia alcune eccezioni. Questo è easy to do for one exception, ma non riesco a dichiarare che un metodo genera più eccezioni.Scala @ genera più eccezioni

Questo non funziona:

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

E, ovviamente, non fa questo:

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

Avete provato ad aggiungere multiplo del '@ throws' annotazione, invece? Fammi sapere se funziona e aggiungo come risposta – cmbaxter

+0

@cmbaxter. L'ho appena provato quando ho visto il tuo commento, e funziona. Per favore aggiungilo come risposta e accetterò – goncalopp

risposta

9

Nell'esaminare il costruttore per @throws, è necessario un solo argomento Class[_]. Tenendo conto di ciò, non sarà possibile utilizzare la notazione dell'array per rappresentare più classi. Quindi l'alternativa è di aggiungere le più volte di annotazione, uno per ciascuna eccezione supportati:

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

@throws è definito come segue:

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

Così si può solo mettere un'eccezione per annotazione. Aggiungi un'annotazione per eccezione.