1. ホーム
  2. javascript

exceptionHandlerの実装をオーバーライドする方法

2023-10-30 09:35:33

質問

javascriptの例外が発生したときに、常に行いたいことがあります。

のドキュメントから $exceptionHandler :

angular式でキャッチできない例外はすべてこのサービスに委譲されます。デフォルトの実装では、単に$log.errorに委ねられ、ブラウザコンソールにログが記録されます。

default implementation"と書かれていることから、このサービスに独自の実装を提供し、例外がスローされたときに必要なことを行う方法があるように思います。質問は、これをどのように行うかということです。すべての例外をこのサービスに送りつつ、起こしたい機能を提供するにはどうしたらよいでしょうか?

どのように解決するのですか?

私が見つけたもう一つの方法は、quot;decorate" を使って $exceptionHandler を通して $provide.decorator 関数で指定します。これは、オリジナルの実装を独自の実装の一部として使用したい場合に、 その実装への参照を提供するものです。ですから、次のようなことができます。

mod.config(function($provide) {
    $provide.decorator("$exceptionHandler", ['$delegate', function($delegate) {
        return function(exception, cause) {
            $delegate(exception, cause);
            alert(exception.message);
        };
    }]);
});

これはオリジナルの例外ハンドラが行うことに加えて、カスタム機能を行います。

こちらをご覧ください 更新されたフィドル .