DEVGRU

プログラミングと競馬予想について書きます

Angular + Sentry で、 ErrorHandler から console.log() を呼び出すときの落とし穴

あんまりないと思うのだが、Angular と Sentry (Ravenではなく) を同時に使っているとき、ErrorHandler で Sentry にエラーを送ると同時に console.log() にエラー内容を出したいことがあるかもしれない(うちのプロジェクトではなぜかある)。

しかし、そのまま console.log() するとまずいことが起きたので、回避方法をここに書いておく。

発生したまずいこと、というのは再帰呼出しで、ブラウザの制限を食いつぶすまで再帰呼び出しが続いていたようだ。

これを回避するには、以下のようにする。

import { consoleSandbox } from '@sentry/utils/misc';

class MyErrorHandler extends ErrorHandler {

    handleError(err: any) {
         consoleSandbox(() => {
              console.error(err.originalError || err);
         });
    }
}

これで再帰呼び出しは起こらないようになった。

Angularアプリケーションプログラミング

Angularアプリケーションプログラミング

Angularデベロッパーズガイド  高速かつ堅牢に動作するフロントエンドフレームワーク

Angularデベロッパーズガイド 高速かつ堅牢に動作するフロントエンドフレームワーク

  • 作者: 宇野陽太,奥野賢太郎,金井健一,林優一,吉田徹生,稲富駿,丸山弘詩
  • 出版社/メーカー: インプレス
  • 発売日: 2017/12/15
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログを見る