Scala try/catch 与将来恢复不同的处理异常

Ted*_*ong 3 error-handling scala exception

有什么区别

try {
       Future . map { }

} catch {}
Run Code Online (Sandbox Code Playgroud)

Future.map {} recover {}
Run Code Online (Sandbox Code Playgroud)

它们不是同一个东西吗?try catch 如何处理 futures 中的异常与恢复方法如何处理。

Ale*_*ITC 5

当您使用 a 时Future,您将结果包装在其中,因此异常也被包装。

这就是为什么此代码不打印任何内容的原因:

try { Future(throw new RuntimeException(""))} catch { case ex => println("Got it") }
Run Code Online (Sandbox Code Playgroud)

虽然此代码打印“明白了”:

Future(throw new RuntimeException("")).recover { case ex => println("Got it") }
Run Code Online (Sandbox Code Playgroud)

recoverrecoverWith方法可以帮助您处理包装的异常(如果有)。

  • 非常感谢先生,这是一个清晰而简单的解释 (2认同)