Scala @throws multiple exceptions

3.1k views Asked by At

I need to call scala code from java, so I need to tell the compiler that a certain method throws certain exceptions. This is easy to do for one exception, but I'm struggling to declare that a method throws multiple exceptions.

This doesn't work:

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

And, obviously, neither does this:

@throws( classOf[ ExceptionA , ExceptionB] )
2

There are 2 answers

0
cmbaxter On BEST ANSWER

In looking at the constructor for @throws, it takes a single Class[_] argument. Taking that into consideration, you won't be able to use the array notation to represent multiple classes. So the alternative it to add the annotation multiple times, one for each supported exception:

@throws( classOf[ExceptionA] )
@throws( classOf[ExceptionB] )
0
vptheron On

@throws is defined as follow:

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

So you can only put one exception per annotation. Add one annotation per exception.