【发布时间】:2017-10-31 19:13:08
【问题描述】:
有什么区别
try {
Future . map { }
} catch {}
和
Future.map {} recover {}
它们不是一回事吗? try catch 如何处理future 中的异常与recover 方法的区别。
【问题讨论】:
标签: scala exception error-handling
有什么区别
try {
Future . map { }
} catch {}
和
Future.map {} recover {}
它们不是一回事吗? try catch 如何处理future 中的异常与recover 方法的区别。
【问题讨论】:
标签: scala exception error-handling
当您使用Future 时,您会将结果包装在其中,因此也会包装异常。
这就是为什么这段代码不打印任何东西的原因:
try { Future(throw new RuntimeException(""))} catch { case ex => println("Got it") }
虽然这段代码显示“知道了”:
Future(throw new RuntimeException("")).recover { case ex => println("Got it") }
recover 和 recoverWith 方法可帮助您处理包装的异常(如果有)。
【讨论】:
Future[T] 的函数时,在Future 之外抛出异常是一种不好的做法。你需要尝试/捕捉那些。