2016-05-31 85 views

回答

1

它在標準庫中的Promise的執行過程中被稱爲幾次深度。請參閱source

try onComplete(value) catch { case NonFatal(e) => executor reportFailure e } 

ExecutionContext可以實現reportFailure當未來/承諾未能執行任意代碼。標準庫中實現此方法的唯一方法是ExecutionContextImpl,它不在公共API中,但找到了here。該課程接受reporter: Throwable => Unit函數。默認ExecutionContext.Implicits.global使用ExecutionContext.defaultReporter,它只是將堆棧跟蹤打印到System.err

如果要定製行爲,則可能需要定義自己的ExecutionContext。很難想象一種情況,除了記錄堆棧跟蹤或其他類型的日誌記錄之外,您想要產生其他副作用。

1

此方法報告不能報告的異常。

當在沒有其他報告失敗方式的回調執行期間發生異常時調用它。特別是,對Future.onComplete(例如通過Future.foreach)的呼叫返回Unit並且可以在任何線程上執行,因此他們沒有辦法向其呼叫者報告故障。在onComplete內引發異常時,將發送到此方法。

相關問題