1

私は次の<core-icon>ような要素を持っています

<polymer-element name="app-element">
  <template>
    <core-icon icon="{{icon}}"></core-icon>
  </template>
  <script ...>
</polymer-element>
@CustomTag('app-element')
class AppElement extends PolymerElement {
  AppElement.created() : super.created();

  @observable
  String icon = 'menu';

  clickHandler(e) {
    icon = null;
  }
} 

これにより、この例外が発生します

Exception caught during observer callback: TypeError: Cannot read property 'split' of null
    at core-icon.Polymer.updateAlt (http://localhost:63342/core-elements/packages/core_elements/src/core-icon/core-icon.html:188:50)
    at core-icon.Polymer.updateIcon (http://localhost:63342/core-elements/packages/core_elements/src/core-icon/core-icon.html:147:14)
    at core-icon.g.invokeMethod (http://localhost:63342/core-elements/packages/polymer/src/js/polymer/polymer.js:13:25932)
    at core-icon.g.notifyPropertyChanges (http://localhost:63342/core-elements/packages/polymer/src/js/polymer/polymer.js:13:24037)
    at Object.x.report_ (http://localhost:63342/core-elements/packages/polymer/src/js/polymer/polymer.js:12:18274)
    at Object.S.check_ (http://localhost:63342/core-elements/packages/polymer/src/js/polymer/polymer.js:12:22612)
    at 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

私の意見では、これは<core-icon>問題ですが、問題を作成しますが、とにかく私の質問は次のとおりです。

Dart でそのような JavaScript 例外をキャッチする方法はありますか?

もちろん、成功icon = null;するtry/catchかどうかにかかわらず、行をラップしようとしました。window.onError.listen((e)...);

4

1 に答える 1

0

私は実際に試したことはありませんが、それが解決策だと思います:

ソース: https://github.com/dart-lang/core-elements/issues/148#issuecomment-62574668

実際の問題は、js 側で例外がキャッチされ、コンソールに出力されるだけであるため、アクセスできないようです。ただし、 Observer._errorThrownDuringCallback を true に設定するため、テストに次を追加すると、適切に失敗します。

expect(context['Observer']['_errorThrownDuringCallback'], false,
    reason: 'Setting icon to null shouldn\'t throw an error.');
于 2015-02-21T11:15:36.273 に答える