DataGrid のレンダリング中に途中でエラーが発生した場合 (私の場合は、cell.formatter または cell.get で発生することが多い)、グリッドは例外をキャッチし、プロセス全体を中止し、「申し訳ありません」というあいまいなメッセージを表示します。 、 エラーが発生しました"。
エラーが発生したときにデバッグコンソールに表示されるように、その例外トラップを抑制する方法はありますか?
DataGrid のレンダリング中に途中でエラーが発生した場合 (私の場合は、cell.formatter または cell.get で発生することが多い)、グリッドは例外をキャッチし、プロセス全体を中止し、「申し訳ありません」というあいまいなメッセージを表示します。 、 エラーが発生しました"。
エラーが発生したときにデバッグコンソールに表示されるように、その例外トラップを抑制する方法はありますか?
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;
}
}