摘要: 以下是本人在學習過程中做的一點點小小的總結,在這里留個副本!
現有代碼存在的問題:
為了解決每個業務模塊對應一個Servlet,Servlet過多的問題
解決辦法:
使用一個新的Servlet,匯總了所有的業務模塊Servlet,增加邏輯判斷,具體調用哪個業務Servlet
public class ServletAction extends HttpServlet {... 閱讀全文
2009年4月2日
public class UserService {
private UserService userService = null;
private UserService() {}
public static UserService getInstance() {
if(userService == null) {
synchronized(UserService.class) {
if(userService == null) {userService = new UserService();}
}
}
return userService;
}
}
private UserService userService = null;
private UserService() {}
public static UserService getInstance() {
if(userService == null) {
synchronized(UserService.class) {
if(userService == null) {userService = new UserService();}
}
}
return userService;
}
}
首先,當DAO層Catch到SQL異常,應該讓相應的事務回滾,并繼續拋出該異常
conn.rollback();
throw e;
在方法聲明時throws這個異常;
第二,在Service層調用到Dao層時,try catch這個異常,在catch住中把它處理為RuntimeException異常;
處理過程是:自定義一個繼承自RuntimeException的異常類AppRuntimeException;
catch(){
new AppRuntimeException();
}
第三,在Servlet中使用配置文件web.xml注冊這個Exception,或者注冊為RuntimeException,調用Service時,如果發生這個異常,則會跳轉到相關的友好的面向用戶的錯誤頁面;
注意:如果頁面未轉向,則可能是反射過程中拋出的其他異常截獲了我們自定義的這個RuntimeException,我們可以在這個異常中做出處理,讓它轉換為我們自定義的RuntimeException;
第四,以上我們只是簡單的處理了異常,一般正常的與業務相關的異常;