gpt4 book ai didi

javascript - 使用 window.onerror 处理 JavaScript 错误

转载 作者:行者123 更新时间:2023-11-29 19:12:20 24 4
gpt4 key购买 nike

我正在尝试处理我的错误,但不幸的是我没有成功。

在我的 AngularJS 应用程序“运行”中,我编写了这段代码:

window.onerror = function (msg, url, line, col, error) {
alert('error');
};
$timeout(() => errorrr);

虽然我确实在控制台上看到错误:

ReferenceError: errorrr is not defined

我没有收到警报...


如果我在应用程序的“运行”之外执行相同的代码,它就可以工作。

为什么/我该如何解决?


编辑使用 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
});
};
});

它抛出

Circular dependency found: $rootScope <- $exceptionHandler <- $rootScope

有没有办法在这个工厂中获取 $rootscope?

最佳答案

正如问题评论中所建议的,最好使用 angular 自己的 $exceptionHandler

要解决循环注入(inject)的问题,我需要使用 $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
});
};
});

关于javascript - 使用 window.onerror 处理 JavaScript 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37890152/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com