最近专案有用dwr进远端交互,那么对于异常的信息当然需要做一些处理,所以下面就说一下dwr的异常处理。
通常來說對於ajax的返回有兩種情況:1.異常返回(超時和程式異常等)2.自定義錯誤返回(按照目前系統通過map.put("result",true);來設置),如果是false表示异常,这个部分将不描述
下面介紹異常返回處理方式,分為全局異常和局部異常
第一:全局異常,此主要是對於一些通用的處理方式(自己不需要寫,當然先要定義一個js文件並引入您的html文件) js/dwr/errorset.js
dwr.engine.setTimeout(1000); //函數設置全局超時。如果設置值為0(默認)可以將超時關掉,setTimeout()的單位是毫秒。如果調用超時發生,錯誤處理器就會被調用 dwr.engine.setErrorHandler(handler); //來改變錯誤處理方式 DWREngine.setWarningHandler(handler);//改變警告處理方式 //全局處理方式 function handler(msg) { alert(msg); //自己定義資訊 }
//調用,和原先一樣不需要做任何配置
Address.getTown([objectName[1],defaultValue,cid] ,Address_setOptions);
第二:局部異常,主要是針對一些特殊業務,如您的業務的調用時間可能超過全局設置的秒數也可能需要一些自定義錯誤回調提示方式
Address.getTown([objectName[1],defaultValue,cid] ,{callback:Address_setOptions,timeout:1000,errorHandler:errHander});
function errHander(message){
alert(message);
}
使用元資料物件,你可以設定超時數,加上出現異常的回調控制碼
對異常的補充:
對於程式異常的處理補充,通常在程式中我們可以有選擇的捕獲一些異常,如空指針異常,除數為0和自定義異常等等,所以可以針對異常進行配置而提示不同的提示資訊
對需要進行捕獲的異常進行配置dwr.xml中(只看粗體描述就好)
|
<!-- 定義異常,當然java.lang.StackTraceElement要定義否則可能是異常堆疊對象找不到 --> <convert converter="bean" match="java.lang.StackTraceElement"/> <!—定義空指針異常 --> <convert converter="bean" match="java.lang.NullPointerException"/> <!—定義自定義異常 --> <convert converter="bean" match="service.dwr.exception.SystemException"/>
<!--定義JAVA BEAN - 下拉選單物件 Converter:這個是參數轉化,通常,如果是基本類型,就不用在這裏聲明,但是如果是自定義的類型,就需要使用到它了 --> <convert converter="bean" match="service.dwr.bean.Option"/> <!--代表java物件創建時用什麼方法來創建,默認下是new,當然如果這個類的域如果是“session”或更大,又或者方法是靜態的,這裏就需要用none --> <!-- javascript:,通俗的說就是在js中用什麼來調用java方法,在檔中要有"javascriptName".js的聲明 --> <create creator="new" javascript="Address"> <param name="class" value="service.dwr.Address" /> </create>
定義好了之後如果後臺丟出異常如下 //if(true)throw new NullPointerException("出現空指針異常!"); if(true)throw new SystemException("系統異常","測試異常");
那麼前臺的異常回調方法會列印出來 function errHander(message,exc){ alert(message+ '-----'+ exc.otherMessage); // result : 系統異常-----測試異常 (otherMessage必須是自定義異常的一個屬性且提供了get方法) } 如果不是自定義異常那麼就不要第二個參數啦 function errHander(message,exc){ alert(message); // result : 出現空指針異常! } |
給出自定義異常類
|
package service.dwr.exception;
public class SystemException extends Exception {
private String otherMessage;
public SystemException(String message) { super(message); } public SystemException(String message,String otherMessage) { super(message); this.otherMessage = otherMessage; } public String getOtherMessage() { return otherMessage; } public void setOtherMessage(String otherMessage) { this.otherMessage = otherMessage; } } |
完結!
2062

被折叠的 条评论
为什么被折叠?



