我正在努力处理我的错误,但不幸的是我没有成功。
在我的AngularJS App'运行'我写这段代码:
window.onerror = function (msg, url, line, col, error) {
alert('error');
};
$timeout(() => errorrr);
虽然我确实在控制台上看到错误:
ReferenceError:未定义errorrr
我没有收到警报......
如果我执行相同的代码,在App' run'之外,它就能正常工作。
为什么/我该如何解决?
修改 使用angular,我无法访问$ rootScope
angular.module('app').factory('$exceptionHandler', function ($log, $rootScope) {
return function myExceptionHandler(exception, cause) {
$log.error(exception, cause);
$rootScope.errors.push({
exception: exception,
cause: cause
});
};
});
它抛出
找到循环依赖项:$ rootScope< - $ exceptionHandler< - $ rootScope
有没有办法在这家工厂内获得$ rootscope?
答案 0 :(得分:3)
正如对该问题的评论中所建议的那样,最好使用角度自己的$exceptionHandler
。
要解决循环注入问题,我需要使用$injector
服务,如下所示:
angular.module('app').factory('$exceptionHandler', function ($log, $injector) {
return function myExceptionHandler(exception, cause) {
$log.error(exception, cause);
var $rootScope = $injector.get('$rootScope');
$rootScope.errors.push({
string: exception.toString(),
message: exception.message,
lineNumber: exception.lineNumber,
stack: exception.stack,
cause: cause
});
};
});