web程式莫名彈出錯誤提示框(dwr),處理方法。產生原因有待思考

來源:互聯網
上載者:User

做項目過程中發現使用DWR方式調用遠程方法,有時會莫名的彈出alert框,內容為“error”。是有可能返回空值或者直接錯誤,必須做出相應的異常處理:
Remote.method(params,function(data){  
    //服務端執行後用戶端的邏輯,如  
    alert("服務端執行後返回的資料:"+data);  
}); 

Remote->處理類,method->類中方法,params->method方法中參數,function->回調方法,data->回調方法返回的資料。

第一個參數為用戶端傳向服務端的資料,最後一個參數直接就是一個回呼函數。因為服務端根據 Java 對象產生的 js 代碼就是:
Remote.method = function(p0, callback) {
    dwr.engine._execute(Remote._path, 'Remote', 'method', p0, callback);
}
如果遠程方法在處理請求時拋出了異常,DWR 只會給出alert("Error") 簡單顯示錯,所以需要去琢磨如何主動捕獲這種錯誤,更友好的展示給使用者。所以若碰到遠程調用的異常

那個alert("Error") 其實是 DWR 的全域錯誤處理,可通過 dwr.engine.setErrorHandler(errorHandler) 來改變它的預設行為的,如
function errh(errorString, exception) {
    alert("提示你自訂的全域出錯資訊。");
}
dwr.engine.setErrorHandler(errh);
  也許我們很少這麼做,因為全域性的錯誤處理滿足不了個人化的遠程調用。我們可以把錯誤處理  errorHandler 寫在遠程調用的函數參數中。回頭看前面那個 callback,當它是一個函數時,就是個成功調用後的處理函數,它也可以是個包含幾個函數的對象,此時遠程調用就要這麼寫:
Remote.method(params,{  
        callback:function(data){ //調用成功時的處理函數  
            //服務端執行後用戶端的邏輯,如  
            alert("服務端執行後返回的資料:"+data);  
        },  
        errorHandler:function(errorString, exception) {//執行異常時  
            alert('修改 XXX 時出錯,請檢查 XXX 云云:'+ errorString)  
        }  
    }  
); 
  更深入的,callback 中不可以包括另外兩個函數屬性:exceptionHandler、warningHandler 和 textHtmlHandler。沒有 exceptionHandler 處理函數就會去應用 errorHandler 函數,並且如果在 callback 函數中的 js 出錯也會跑到 errorHandler 去執行的。
再,還能在 dwr.xml 中配置有關異常的 convert,如:<convert match="java.lang.Exception" converter="exception"/>,通過 errorHandler 的 errorString、exception 擷取更詳細的資訊。

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.