2011-08-23 49 views
0

當DataGrid呈現時,如果沿途遇到錯誤(在我的情況下,通常是cell.formatter或cell.get),網格捕獲異常,中止整個過程,而簡單的提示模糊的信息,「對不起,發生了錯誤」。在dojo數據網格上禁用異常捕獲

是否有辦法抑制異常陷阱,以便在發生錯誤時它會出現在調試控制檯中?

回答

0

我沒有找到一種方法來做到這一點與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; 
     } 
}