当使用类似下面的一些代码:
scala> Future { null } onComplete { case Success(v) => v.toString }
斯卡拉抛出以下异常:
scala> java.lang.NullPointerException
at $line14.$read$$iw$$iw$$anonfun$2.apply(<console>:11)
at $line14.$read$$iw$$iw$$anonfun$2.apply(<console>:11)
at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:32)
at scala.concurrent.impl.ExecutionContextImpl$$anon$3.exec(ExecutionContextImpl.scala:107)
at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
这将是美好的,因为我不处理任何异常。 问题是,我的应用程序完全挂起。
我使用concurrent.ExecutionContext.Implicits.global
,我想onComplete
在此全局执行上下文中执行。 问题是,它似乎像执行上下文停止接受任何工作,并且应用程序只是挂起。
我一定要明确使用try ... catch
让我意想不到的事情发生保护我的应用程序的情况下onComplete
?
谢谢