我希望能够捕获屏幕上引发的任何错误。到目前为止,我的代码是这样的:
Ext.application({
errorHandler:function(err){
alert(err.msg);
return true;
},
requires: [
'Ext.ux.ajax.JsonSimlet',
'Ext.ux.ajax.SimManager'
],
views: [
'Admin.view.something',
'Admin.view.somethingController'
],
name: 'Admin',
launch : function() {Ext.create('Admin.view.something');
Ext.Error.notify = false;
Ext.Error.handle = this.errorHandler;
}
});
问题是,我有一些可能未定义的对象。如果我执行undefined.properties之类的操作,那么错误处理将无法捕获它。
我了解诸如“ Ext.isDefined()”之类的函数,但是对于这种情况,我确实需要以相同的方式处理所有通用错误。
答案 0 :(得分:1)
Ext.Error.handle
仅根据documentation处理Ext.raise
引起的错误。
浏览器窗口中的error
事件是一种处理普通javascript错误的解决方案。
您可以将带有window.addEventListener('error', function(event) { ... })
的处理程序附加到该处理程序。
以下代码应捕获项目中的所有错误。
launch : function() {
Ext.Error.notify = false;
Ext.Error.handle = this.errorHandler;
window.addEventListener('error', this.errorJsHandler);
Ext.create('Admin.view.something');
},
errorJsHandler: function(err) { // err = ErrorEvent Object https://developer.mozilla.org/en-US/docs/Web/API/ErrorEvent
alert(err.message);
return true; // prevent the firing of the default event handler
},