goncalopp goncalopp - 3 months ago 12
Java Question

Catch in Java a exception thrown in Scala - unreachable catch block

Scala doesn't have checked exceptions. However, when calling scala code from java, it's desirable to catch exceptions thrown by scala.

Scala:

def f()=
{
//do something that throws SomeException
}


Java:

try
{ f() }
catch (SomeException e)
{}


javac doesn't like this, and complains that "this exception is never thrown from the try statement body"

Is there a way to make scala declare that it throws a checked exception?

Answer

Use a throws annotation:

@throws(classOf[SomeException])
def f()= {
    //do something that throws SomeException
    }

You can also annotate a class constructor:

class MyClass @throws(classOf[SomeException]) (arg1: Int) {
}

This is covered in the Tour of Scala

Comments