Как обрабатывать ошибки в ExtJs - PullRequest
0 голосов
/ 24 сентября 2018

Я хочу быть в состоянии отловить любую ошибку, выданную на моем экране.Пока мой код такой:

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 голосов
/ 25 сентября 2018

Ext.Error.handle обрабатывает только ошибки, вызванные Ext.raise в соответствии с документацией .

Решением для обработки простых ошибок JavaScript является событие 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
},
...