JS обрабатывает все ошибки на всех страницах с угловым

0

Я использую угловые js, и я пытаюсь поймать все ошибки на всех страницах, но проблема в том, что он не улавливает ошибки на всех страницах, например, я делаю ReferenceError в одном из контроллеров, и он этого не понимает.

  $rootScope.$on("$stateChangeStart", function() {

    window.onerror = function( msg, url, line, col, error ) {

      var extra = !col ? '' : '\ncolumn: ' + col;
      extra += !error ? '' : '\nerror: ' + error;

      var data = {
        msg : msg,
        url : url,
        line: line + extra
      }
      alert('error');

      var suppressErrorAlert = true;

      return suppressErrorAlert;
    };
}

Как я могу сделать эту работу?

Теги:

1 ответ

0
Лучший ответ

Не используйте window.onerror, вместо этого используйте $ exceptionHandler. Угловая имеет глобальную фабрику $ exceptionHandler, которая ловит ошибки, которые происходят внутри контроллеров, служб и т.д.

Любое неперехваченное исключение в угловых выражениях делегируется этой службе.

angular.module('exceptionOverride', []).factory('$exceptionHandler', 

function() {
  return function(exception, cause) {
    exception.message += ' (caused by "' + cause + '")';
    throw exception;
  };
});

Этот пример переопределит нормальное действие $ exceptionHandler, чтобы исключить угловые исключения, если они произойдут, а не просто войти в консоль.

Дополнительная информация: https://docs.angularjs.org/api/ng/service/ $ exceptionHandler

Хорошее сообщение в блоге: http://blog.loadimpact.com/blog/exception-handling-in-an-angularjs-web-application-tutorial/

Ещё вопросы

Сообщество Overcoder
Наверх
Меню