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 中的异常与恢复方法如何处理。
当您使用 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)
recover和recoverWith方法可以帮助您处理包装的异常(如果有)。