2016-05-31 10 views

答えて

1

これは、標準ライブラリのPromiseの実装では数倍深く呼ばれています。 sourceを参照してください。

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

ExecutionContext未来/約束が失敗したときに任意のコードを実行するためにreportFailureを実装することができます。このメソッドを実装する標準ライブラリの唯一のものはExecutionContextImplです。これは公開APIにはありませんが、hereが見つかりました。このクラスはreporter: Throwable => Unit関数を受け入れます。デフォルトのExecutionContext.Implicits.globalExecutionContext.defaultReporterを使用します。これは単にスタックトレースをSystem.errに出力します。

動作をカスタマイズする場合は、独自のExecutionContextを定義する必要があります。スタックトレースのロギングやその他の種類のロギング以外の副作用を生み出すシナリオを想像するのは難しいです。

1

このメソッドは、それ以外の場合は報告できない例外を報告します。

これは、他の方法で障害が報告されていないコールバックの実行中に例外が発生したときに呼び出されます。特に、へのコール(Future.foreach経由)はUnitを返し、任意のスレッドで実行できるため、呼び出し元に障害を報告する方法がありません。 onComplete内に例外がスローされると、このメソッドに送信されます。

関連する問題