如何处理ExtJ上的错误

时间:2018-09-24 08:59:34

标签: javascript extjs error-handling extjs6

我希望能够捕获屏幕上引发的任何错误。到目前为止,我的代码是这样的:

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()”之类的函数,但是对于这种情况,我确实需要以相同的方式处理所有通用错误。

1 个答案:

答案 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
},