あなたがcallee
関数を呼び出すとき、それはFuture
を返します。 await
は、その未来が完了するのを待ちます。未来を待っていない場合は、とにかく終了しますが、あなたのcaller
機能はそれを待ってブロックされません。だから、あなただけ行うことができます。
caller() {
callee(); // Ignore returned Future (at your own peril).
}
あなたがそれを行う場合、あなたはcallee
がエラーで失敗した場合に何が起こるかを知っておく必要があります。それにより、返された未来がそのエラーで完全になり、将来聞いていなければ、そのエラーは「キャッチされていない」とみなされます。キャッチされていないエラーは現在のZone
によって処理され、デフォルトの動作はトップレベルのキャッチされていないエラーのように振る舞います。
したがって、このエラーを処理することを忘れないでください。
callee
が失敗しない場合は、完了しました(とにかく失敗しない限り、それで楽しいデバッグができます)。
あなたがローカルでエラーを処理することができます
caller() {
callee().catchError((e, s) {
logErrorSomehow(e, s);
});
}
か、エラー処理ゾーンをインストールし、その中にあなたのコードを実行することができた:
runZoned(() {
myProgram();
}, onError: logErrorSomehow);
はrunZoned関数を参照してください、それはonError
パラメータです。
出典
2016-05-31 17:36:45
lrn