`

scala学习:try catch 返回值

 
阅读更多

Scala的行为与Java的差别仅源于Java的try-finally不产生值。Java里,如果finally子句包含一个显式返回语句,或抛出一个异常,这个返回值或异常将“凌驾”于任何之前源于try代码块或某个它的catch子句产生的值或异常之上。如:

 

  1. def f(): Int = try { return 1 } finally { return 2 }  

调用f()产生结果值2。相反:

 

  1. def g(): Int = try { 1 } finally { 2 }  

调用g()产生1。这两个例子展示了有可能另大多数程序员感到惊奇的行为,因此通常最好还是避免从finally子句中返回值。最好是把finally子句当作确保某些副作用,如关闭打开的文件,发生的途径。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics