本文介绍了Scala:静默捕获所有异常的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
空捕获块在Scala中似乎无效
Empty catch block seems to be invalid in Scala
try {
func()
} catch {
} // error: illegal start of simple expression
如何非法启动我可以捕获所有异常而不进行处理吗?
How I can catch all exceptions without their processing?
推荐答案
确实不是要捕获某些异常。您仍然可以请求它:
Some exceptions really aren't meant to be caught. You can request it anyway:
try { f(x) }
catch { case _: Throwable => }
但这可能不是那么安全。
but that's maybe not so safe.
所有安全异常都由 scala.util.control.NonFatal
匹配,因此您可以:
All the safe exceptions are matched by scala.util.control.NonFatal
, so you can:
import scala.util.control.NonFatal
try { f(x) }
catch { case NonFatal(t) => }
风险较小但仍然非常有用的渔获。
for a slightly less risky but still very useful catch.
或 scala.util.Try
可以为您完成:
Try { f(x) }
您可以在结果上进行模式匹配您想知道发生了什么。 (但是,当您想要 finally
块时, Try
效果不佳。)
and you can pattern match on the result if you want to know what happened. (Try
doesn't work so well when you want a finally
block, however.)
这篇关于Scala:静默捕获所有异常的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!