有没有办法在Dart中捕获JavaScript异常?

有没有办法在Dart中捕获JavaScript异常?,dart,dart-js-interop,Dart,Dart Js Interop,我有一个元素,比如 @CustomTag('app-element')) 类AppElement扩展了聚合关系{ AppElement.created():super.created(); @可观察 字符串图标='菜单'; clickHandler(e){ icon=null; } } 这导致了这个例外 观察员回调期间捕获异常:TypeError:无法读取null的属性“split” 在core-icon.Polymer.updateAlt(http://localhost:63342/

我有一个
元素,比如


@CustomTag('app-element'))
类AppElement扩展了聚合关系{
AppElement.created():super.created();
@可观察
字符串图标='菜单';
clickHandler(e){
icon=null;
}
} 
这导致了这个例外

观察员回调期间捕获异常:TypeError:无法读取null的属性“split” 在core-icon.Polymer.updateAlt(http://localhost:63342/core-elements/packages/core_elements/src/core icon/core icon.html:188:50) 在core-icon.Polymer.updateIcon(http://localhost:63342/core-elements/packages/core_elements/src/core icon/core icon.html:147:14) 在core-icon.g.invokeMethod中(http://localhost:63342/core-elements/packages/polymer/src/js/polymer/polymer.js:13:25932) 在core-icon.g.notifyPropertyChanges中(http://localhost:63342/core-elements/packages/polymer/src/js/polymer/polymer.js:13:24037) 在Object.x.report\u(http://localhost:63342/core-elements/packages/polymer/src/js/polymer/polymer.js:12:18274) 在Object.S.check\u(http://localhost:63342/core-elements/packages/polymer/src/js/polymer/polymer.js:12:22612) 在c(http://localhost:63342/core-elements/packages/polymer/src/js/polymer/polymer.js:12:12181)polymer.concat.js:4861x.report polymer.concat.js:4861S.check polymer.concat.js:5264c 在我看来,这是一个问题,但在
中,我将创建一个问题,但我的问题是:

有没有办法在Dart中捕获这样一个JavaScript异常


当然,我试图将这行
icon=nulltry/catch
window.onError.listen((e)…)但没有成功。

我还没有尝试过,但我想这是解决方案:

资料来源:

看起来实际的问题是异常在js端被捕获,然后被打印到控制台,所以我们无法访问它。他们确实将Observer.\u errorThrownDuringCallback设置为true,因此您可以在测试中添加以下内容,测试将相应失败:

expect(上下文['Observer']['u errorThrownDuringCallback'],false,
原因:“将图标设置为null不应引发错误。”);

您必须从通话开始就尝试/捕捉。这就是为什么try/catch
icon=null
没有帮助的原因。为什么不使用:
。我不认为这是一个bug,为什么您希望图标为空?不清楚您所说的呼叫开始的
是什么意思。我可以在绑定或我的代码中检查
null
,但我仍然认为
核心图标
图标
变为
null
时不应抛出。我没有/没有故意将其设置为
null
,但我偶然发现了这一点,因为在某些情况下,模型或模型
图标中的字段必然会变为
null
。上面的代码被简化为一个小例子,允许重现问题。也许有一种方法可以注册一个全局错误处理程序,允许处理此类异常?即使区域也不会捕获错误。我尝试了
runZoned((){icon=null;},onError:(e){print('onError');})未成功。感谢您的关注!