Scala:静默捕获所有异常 [英] Scala: Silently catch all exceptions

查看:212
本文介绍了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:静默捕获所有异常的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆