programing

$exceptionHandler 구현을 재정의하는 방법

abcjava 2023. 3. 27. 20:53
반응형

$exceptionHandler 구현을 재정의하는 방법

Javascript 예외가 발생할 때마다 추가로 하고 싶은 일이 있습니다.

다음 문서에서$exceptionHandler:

각도 표현식의 수집되지 않은 예외는 이 서비스에 위임됩니다.기본 구현에서는 $log.error를 위임하고 브라우저 콘솔에 로그인합니다.

「디폴트 실장」이라고 하는 것에 의해서, 서비스 전용의 실장을 제공해, 예외가 발생했을 때에 필요한 작업을 실시할 수 있는 방법이 있다고 생각할 수 있습니다.제 질문은, 이걸 어떻게 하느냐는 것입니다.이 서비스에 대한 모든 예외를 유지하면서 원하는 기능을 제공하려면 어떻게 해야 합니까?

이를 위해 찾은 또 다른 선택지는 이 '장식'입니다.$exceptionHandler$120.discator 함수를 통해 이루어집니다.커스텀 실장의 일부로서 원래의 실장을 사용하고 싶은 경우는, 이것을 참조할 수 있습니다.다음과 같은 작업을 수행할 수 있습니다.

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

원래 예외 핸들러의 동작과 커스텀 기능이 실행됩니다.

이 업데이트된 바이올린을 참조하십시오.

재지정할 수 있습니다.$exceptionHandler같은 이름의 서비스를 생성하여 기능을 수행합니다.

var mod = angular.module('testApp', []);

mod.factory('$exceptionHandler', function () {
    return function (exception, cause) {
        alert(exception.message);
    };
});

샘플은 이 바이올린을 보세요.공장 출하 시의 정의에 대해 코멘트해 주십시오.$exceptionHandler이 에러는 콘솔에 경고하는 대신 기록됩니다.

다음 그룹 스레드에는 다음과 같은 다른 서비스를 주입하는 예가 있습니다.$http사용.$injector.

주의: 의 기존 기능을 덮어쓰지 않는 경우$exceptionHandler(또는 다른 임베디드 서비스) 서비스의 장식 방법에 대해서는, 이 회답을 참조해 주세요.

$cookie Store라도 서비스/팩토리를 덮어쓸 수 있습니다.완전하고 설정 가능한 오브젝트를 필요로 하는 경우는, 다음의 예를 참조해 주세요.

var myApp = angular.module('myApp', []);

//provider style, full blown, configurable version     
myApp.provider('helloWorld', function() {

    this.name = 'Default';

    this.$get = function() {
        var name = this.name;
        return {
            sayHello: function() {
                return "Hello, " + name + "!"
            }
        }
    };

    this.setName = function(name) {
        this.name = name;
    };
});

//hey, we can configure a provider!            
myApp.config(function(helloWorldProvider){
    helloWorldProvider.setName('World');
});


function MyCtrl($scope, helloWorld, helloWorldFromFactory, helloWorldFromService) {

   helloWorld.sayHello(),
}

언급URL : https://stackoverflow.com/questions/13595469/how-to-override-exceptionhandler-implementation

반응형