如何捕捉飞镖聚合物应用程序中所有未捕获的错误?

时间:2015-02-16 19:47:48

标签: dart dart-polymer dart-async

我想放入一个能够捕获Polymer应用程序中所有未处理错误的处理程序。

我认为Zone将是如此尝试的技巧

void main() {
  runZoned(() => initPolymer(), onError: (e, stackTrace) {
    _log.shout('TOP ZONE', e, stackTrace);
  });
}

但这不起作用。错误永远不会到达此错误处理程序。

不确定这是否与http://code.google.com/p/dart/issues/detail?id=15854

有关

人们如何处理这个问题?

2 个答案:

答案 0 :(得分:4)

如何使用Window.onError

import 'dart:html';

main() {
  window.onError.listen((ErrorEvent e) => print(e.message));
  throw 'boom!';
}

答案 1 :(得分:0)

所以我知道我们已经使用以下构造进行错误处理:

runZoned(() {
   return initPolymer().run(() => Polymer.onReady
       .then(doSomeStuff)
       .whenComplete(doSomeCompleting));
 },
 onError: (err, [stackTrace]) {
   logger.severe("Received an error", err, stackTrace);
 });

我发布它是为了尽快帮助你。我没有一个很好的解释,为什么你的版本目前不工作。我会做一些挖掘工作,看看能不能找出真正不同的东西。