gon*_*opp 8 java scala exception-handling compiler-errors scala-java-interop
Scala 没有检查异常.但是,从java调用scala代码时,最好捕获scala抛出的异常.
斯卡拉:
def f()=
{
//do something that throws SomeException
}
Run Code Online (Sandbox Code Playgroud)
Java的:
try
{ f() }
catch (SomeException e)
{}
Run Code Online (Sandbox Code Playgroud)
javac不喜欢这个,并抱怨"这个异常永远不会从try语句体中抛出"
有没有办法让scala声明它抛出一个已检查的异常?
gon*_*opp 13
使用throws注释:
@throws(classOf[SomeException])
def f()= {
//do something that throws SomeException
}
Run Code Online (Sandbox Code Playgroud)
您还可以注释类构造函数:
class MyClass @throws(classOf[SomeException]) (arg1: Int) {
}
Run Code Online (Sandbox Code Playgroud)
Rex*_*err 10
您仍然可以捕获太多异常,然后重新抛出您无法处理的异常:
try { f(); }
catch (Exception e) {
if (e instanceof SomeException) // Logic
else throw e;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1006 次 |
| 最近记录: |