Index: sdk/lib/async/future.dart |
diff --git a/sdk/lib/async/future.dart b/sdk/lib/async/future.dart |
index 7fe2c682554ea1a264a9522c94796db4ca78e9b7..d189ef6e55ccb00a2008a82b71230e72a8d7b581 100644 |
--- a/sdk/lib/async/future.dart |
+++ b/sdk/lib/async/future.dart |
@@ -265,14 +265,19 @@ abstract class Future<T> { |
* If the invoked callback returns a [Future] `f2` then `f` and `f2` are |
* chained. That is, `f` is completed with the completion value of `f2`. |
* |
- * If [onError] is not given, it is equivalent to `(e) { throw e; }`. That |
- * is, it forwards the error to `f`. |
+ * The error callback [onError] must be of type `onError(error)` or |
+ * `onError(error, StackTrace stackTrace)`. Depending on the function type |
Lasse Reichstein Nielsen
2013/10/04 09:17:39
Per stream-comments, how about:
"If [onError] is
floitsch
2013/10/05 17:22:59
Same as for Stream:
* The [onError] callback mu
|
+ * the future either invokes [onError] with or without a stack trace. The |
+ * stack trace argument might be `null` if the future itself was completed |
+ * with an error but without a stack trace. |
+ * |
+ * If [onError] is not given it forwards the error to `f`. |
* |
* In most cases, it is more readable to use [catchError] separately, possibly |
* with a `test` parameter, instead of handling both value and error in a |
* single [then] call. |
*/ |
- Future then(onValue(T value), { onError(Object error) }); |
+ Future then(onValue(T value), { Function onError }); |
/** |
* Handles errors emitted by this [Future]. |
@@ -305,8 +310,11 @@ abstract class Future<T> { |
* {bool test(error)}) { |
* this.then((v) => v, // Forward the value. |
* // But handle errors, if the [test] succeeds. |
- * onError: (e) { |
+ * onError: (e, stackTrace) { |
* if (test == null || test(e)) { |
+ * if (onError is ZoneBinaryCallback) { |
+ * return onError(e, stackTrace); |
+ * } |
* return onError(e); |
* } |
* throw e; |
@@ -314,7 +322,7 @@ abstract class Future<T> { |
* } |
* |
*/ |
- Future catchError(onError(Object error), |
+ Future catchError(Function onError, |
{bool test(Object error)}); |
/** |