tmp*_*ies 13 functional-programming scala exception try-catch
Scala中的空catch块似乎无效
try {
func()
} catch {
} // error: illegal start of simple expression
Run Code Online (Sandbox Code Playgroud)
如何在没有处理的情况下捕获所有异常?
Rex*_*err 29
有些例外确实无法被捕获.无论如何你可以要求它:
try { f(x) }
catch { case _: Throwable => }
Run Code Online (Sandbox Code Playgroud)
但那可能不那么安全.
所有安全例外都匹配scala.util.control.NonFatal,因此您可以:
import scala.util.control.NonFatal
try { f(x) }
catch { case NonFatal(t) => }
Run Code Online (Sandbox Code Playgroud)
风险略低但仍然非常有用.
或者scala.util.Try可以为你做:
Try { f(x) }
Run Code Online (Sandbox Code Playgroud)
如果你想知道发生了什么,你可以对结果进行模式匹配.(但是,Try当你想要一个finally块时,它不能很好地工作.)
在
import scala.util.Try
val res = Try (func()) toOption
Run Code Online (Sandbox Code Playgroud)
如果尝试成功,您将得到一个Some(value),如果失败,您将得到一个None。
| 归档时间: |
|
| 查看次数: |
18631 次 |
| 最近记录: |