0
當DataGrid呈現時,如果沿途遇到錯誤(在我的情況下,通常是cell.formatter或cell.get),網格捕獲異常,中止整個過程,而簡單的提示模糊的信息,「對不起,發生了錯誤」。在dojo數據網格上禁用異常捕獲
是否有辦法抑制異常陷阱,以便在發生錯誤時它會出現在調試控制檯中?
當DataGrid呈現時,如果沿途遇到錯誤(在我的情況下,通常是cell.formatter或cell.get),網格捕獲異常,中止整個過程,而簡單的提示模糊的信息,「對不起,發生了錯誤」。在dojo數據網格上禁用異常捕獲
是否有辦法抑制異常陷阱,以便在發生錯誤時它會出現在調試控制檯中?
我沒有找到一種方法來做到這一點與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;
}
}