我創建了一個小的AngularJS應用程序,如果特定行未註釋,可能會導致某些錯誤。在應用程序的HTML中,我創建了一個內聯<script>
,用於偵聽window
對象的錯誤事件。AngularJS吞嚥某些錯誤,防止窗口的錯誤事件被調用
<script>
window.addEventListener('error', function (error) {
console.log('====== An error occured', error);
})
</script>
在下面的代碼,我希望事件監聽器被用於所有7個錯誤(當我取消註釋每個錯誤和運行程序)。但是,服務(#7)和控制器(#3)內手動引發的錯誤不會觸發事件偵聽器。他們會向控制檯打印錯誤消息。
// ERROR 1:
// throw new Error('manually thrown error ouside of AngularJs');
// ERROR 2 (syntax error):
// varasakfsdjklajskdfasdf var adfasdf a var adasdf
class MyController {
constructor(MyService) {
MyService.doSomething()
// ERROR 3:
// throw new Error('manually thrown error inside of AngularJs');
// ERROR 4:
// varasakfsdjklajskdfasdf var adfasdf a var adasdf
}
}
function configBlock() {
// ERROR 5:
// throw new Error('manually thrown error inside of AngularJs');
}
function runBlock() {
// ERROR 6:
// throw new Error('manually thrown error inside of AngularJs');
}
class MyService {
doSomething() {
// Error 7
// throw new Error('manually thrown error inside of AngularJs');
}
}
angular.module('app', []);
angular.module('app').controller('MyController', MyController);
angular.module('app').config(configBlock);
angular.module('app').run(runBlock);
angular.module('app').service('MyService', MyService);
這到底是怎麼回事,我怎麼能可靠地獲得每個錯誤,以提高對window object
事件?