Отключить перехват исключений в сетке данных додзё - PullRequest
0 голосов
/ 23 августа 2011

Когда DataGrid выполняет рендеринг, если он обнаруживает ошибку по пути (в моем случае, часто с cell.formatter или cell.get), сетка перехватывает исключение, прерывает весь процесс и просто выводит неопределенное сообщение, "К сожалению, произошла ошибка".

Есть ли способ подавить перехват исключений, чтобы при возникновении ошибки она появлялась в консоли отладки?

1 Ответ

0 голосов
/ 16 сентября 2011

Я не нашел способа сделать это с поведением по умолчанию в dojo, поэтому в качестве обходного пути я сделал небольшую утилиту для изменения структуры макета, прежде чем передать ее в сетку.(Вроде хака, но я сделал сетку в скрипте, а не с разметкой, так что пока она работает, и новая сетка все равно есть на чертежной доске ....

lib.wrapTryCatch = function(call, onException){
    onException = onException || function(e){ 
            console.log({wrappedException: e});
            return e.message;
        };

    var f =  function tryWrapper(){
        try{
            var val = call.apply(this, arguments);
            return val;
        }
        catch(e){
            return onException(e);
        }
    }
    f.wrapped = call;
    f.onException = onException;
    return f;
}

lib.gridUtils = {

    /** Convenience/debugging function to make exceptions visible 
     *  if grid structure cells have errors.
     *  
     *  Puts exception to the console, instead of the grid's default
     *  behavior of dying silently 
     *  
     * */
     decorateStructure: function(structure){

            for(var idx in structure){
                cell = structure[idx];

                if('get' in cell){
                    cell.get = lib.wrapTryCatch(cell.get);
                }

                if('formatter' in cell){
                    cell.formatter = lib.wrapTryCatch(cell.formatter);
                }

            }
            return structure;
        }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...