| Index: lib/src/result/error.dart
|
| diff --git a/lib/src/result/error.dart b/lib/src/result/error.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..eecf68e450c873cfee8aac7a019dde4bc6c7f871
|
| --- /dev/null
|
| +++ b/lib/src/result/error.dart
|
| @@ -0,0 +1,45 @@
|
| +// Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file
|
| +// for details. All rights reserved. Use of this source code is governed by a
|
| +// BSD-style license that can be found in the LICENSE file.
|
| +
|
| +import 'dart:async';
|
| +
|
| +import '../result.dart';
|
| +import 'value.dart';
|
| +
|
| +/// A result representing a thrown error.
|
| +class ErrorResult implements Result {
|
| + final error;
|
| + final StackTrace stackTrace;
|
| +
|
| + bool get isValue => false;
|
| + bool get isError => true;
|
| + ValueResult get asValue => null;
|
| + ErrorResult get asError => this;
|
| +
|
| + ErrorResult(this.error, this.stackTrace);
|
| +
|
| + void complete(Completer completer) {
|
| + completer.completeError(error, stackTrace);
|
| + }
|
| +
|
| + void addTo(EventSink sink) {
|
| + sink.addError(error, stackTrace);
|
| + }
|
| +
|
| + Future get asFuture => new Future.error(error, stackTrace);
|
| +
|
| + /// Calls an error handler with the error and stacktrace.
|
| + ///
|
| + /// An async error handler function is either a function expecting two
|
| + /// arguments, which will be called with the error and the stack trace, or it
|
| + /// has to be a function expecting only one argument, which will be called
|
| + /// with only the error.
|
| + void handle(Function errorHandler) {
|
| + if (errorHandler is ZoneBinaryCallback) {
|
| + errorHandler(error, stackTrace);
|
| + } else {
|
| + errorHandler(error);
|
| + }
|
| + }
|
| +}
|
|
|