errorZone property - Zone class - dart:async library (original) (raw)
Zone geterrorZone
The error zone is responsible for dealing with uncaught errors.
This is the closest parent zone of this zone that provides ahandleUncaughtError method.
Asynchronous errors in futures never cross zone boundaries between zones with different error handlers.
Example:
import 'dart:async';
main() {
var future;
runZonedGuarded(() {
// The asynchronous error is caught by the custom zone which prints
// 'asynchronous error'.
future = Future.error("asynchronous error");
}, (error) { print(error); }); // Creates a zone with an error handler.
// The following `catchError` handler is never invoked, because the
// custom zone created by the call to `runZonedGuarded` provides an
// error handler.
future.catchError((error) { throw "is never reached"; });
}
Note that errors cannot enter a child zone with a different error handler either:
import 'dart:async';
main() {
runZonedGuarded(() {
// The following asynchronous error is *not* caught by the `catchError`
// in the nested zone, since errors are not to cross zone boundaries
// with different error handlers.
// Instead the error is handled by the current error handler,
// printing "Caught by outer zone: asynchronous error".
var future = Future.error("asynchronous error");
runZonedGuarded(() {
future.catchError((e) { throw "is never reached"; });
}, (error, stack) { throw "is never reached"; });
}, (error, stack) { print("Caught by outer zone: $error"); });
}
Implementation
Zone get errorZone;