IE11ってマジ糞ウンチofウンコのファッキン無能ゴミブラウザだからPromiseは使えないんだけど、BabelでバベればPromise使えます。

で、それとは別に、「発生したエラーをすべてキャッチしたいね」っていう話がありまして、Vueのmain.tsでcatchしようと思った。

だけどもVue.config.errorHandlerがPromiseのrejectionを拾ってくれないという事実が判明して無事死亡。死亡しながら色々ググったらどうやらwindowに「unhandledrejection」のEventListenerをAddすりゃいいという結論に至った。

参考:Window: unhandledrejection イベント

で、IE11で動かなかった。ビルゲイツ殺す。

◆結論

window.onunhandledregectionを使用する。

window.onunhandledrejection = (e) => {
  if (e.reason instanceof ReferenceError) {
    // e.reasonにエラーが入ってるよ。
    // この例だとReferenceErrorに絞って処理しているよ。
  } else {

  }
};

参考:Window​Event​Handlers​.onunhandledrejection

これでもってIE11のPromiseがrejectionでもhandleできた。

◆思う事

これってNode.jsを使ってるから動いてるんだろうか?と思った。MDNに記載はあるんだけどIE11とのコンパチがNoになってんだよね。てかそもそもIEにPromise存在しねぇし。TypeScriptに型指定があったから標準っぽくはあるんだけど良く分からんね。10分くらい調べればわかることではあるんだけどIE11のクソに10分も使いたくないから特に調べる気はない。