【发布时间】:2015-03-31 20:58:39
【问题描述】:
import 'dart:async';
void main() {
divide(1, 0).then((result) => print('1 / 0 = $result'))
.catchError((error) => print('Error occured during division: $error'));
}
Future<double> divide(int a, b) {
if (b == 0) {
throw new Exception('Division by zero');
}
return new Future.value(a/b);
}
目前我正在学习如何在 Dart 中使用期货,我被困在一个简单的例子上。当用户尝试除以零时,我的未来会抛出异常。但是, .catchError 不处理我的异常。我用堆栈跟踪得到了未处理的异常。我很确定我遗漏了一些明显的东西,但不明白到底是什么。
据我了解,还有另一种处理错误的方法:
divide(1, 0).then((result) => print('1 / 0 = $result'),
onError: (error) => print('Error occured during division: $error'));
使用命名的可选参数 - onError。这样做仍然会导致未处理的异常。
我想再澄清一件事。我对吗? - 这两种方法的唯一区别是 .catchError() 还处理内部期货(在外部未来的 then() 方法内部调用的期货)抛出的错误,而 onError 只捕获外部未来抛出的错误?
德米特里
谢谢。
【问题讨论】:
标签: dart future unhandled-exception