有没有办法在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=null使用try/catch
或window.onError.listen((e)…)代码>但没有成功。我还没有尝试过,但我想这是解决方案:
资料来源:
看起来实际的问题是异常在js端被捕获,然后被打印到控制台,所以我们无法访问它。他们确实将Observer.\u errorThrownDuringCallback设置为true,因此您可以在测试中添加以下内容,测试将相应失败:
expect(上下文['Observer']['u errorThrownDuringCallback'],false,
原因:“将图标设置为null不应引发错误。”);
您必须从通话开始就尝试/捕捉。这就是为什么try/catchicon=null
没有帮助的原因。为什么不使用:
。我不认为这是一个bug,为什么您希望图标为空?不清楚您所说的呼叫开始的是什么意思。我可以在绑定或我的代码中检查null
,但我仍然认为核心图标
在图标
变为null
时不应抛出。我没有/没有故意将其设置为null
,但我偶然发现了这一点,因为在某些情况下,模型或模型图标中的字段必然会变为null
。上面的代码被简化为一个小例子,允许重现问题。也许有一种方法可以注册一个全局错误处理程序,允许处理此类异常?即使区域也不会捕获错误。我尝试了runZoned((){icon=null;},onError:(e){print('onError');})代码>未成功。感谢您的关注!