Scala doesn't have检查了异常。但是,从java调用scala代码时,可以捕获scala抛出的异常。
Scala的:
def f()=
{
//do something that throws SomeException
}
爪哇:
try
{ f() }
catch (SomeException e)
{}
javac并不喜欢这样,并抱怨"此异常永远不会从try语句体中抛出"
有没有办法让scala声明它会抛出一个已检查的异常?
答案 0 :(得分:12)
使用throws
注释:
@throws(classOf[SomeException])
def f()= {
//do something that throws SomeException
}
您还可以annotate a class constructor:
class MyClass @throws(classOf[SomeException]) (arg1: Int) {
}
答案 1 :(得分:10)
您仍然可以捕获太多异常,然后重新抛出您无法处理的异常:
try { f(); }
catch (Exception e) {
if (e instanceof SomeException) // Logic
else throw e;
}