如何处理 ExtJs 上的错误

How to Handle errors on ExtJs

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

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()" 这样的函数,但对于这种情况,我确实需要以相同的方式处理所有一般性错误。

Ext.Error.handle 仅根据 documentation.

处理 Ext.raise 引发的错误

处理普通 javascript 错误的解决方案是浏览器 window.
上的 error 事件 您可以将带有 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
},