自定義異常資訊的request儲存
阿新 • • 發佈:2019-02-05
對於資訊的判斷處理,有時回出現異常情況,這些異常可能是我們所需要的,這些異常是程式在正常情況下發生的錯誤。
這些錯誤可以當做校驗判斷,以簡化和優化程式碼。一般校驗的地點處位於業務層,由業務層返回異常資訊給控制層,再由控制層轉發到檢視層顯示異常或錯誤提示資訊
1.自定義異常資訊處理類
|—需要繼承Exception |—覆寫Exception的構造方法/** * 使用者業務異常 * @author qdmmy6 * */ public class UserException extends Exception { public UserException() { super(); } public UserException(String message, Throwable cause) { super(message, cause); } public UserException(String message) { super(message); } public UserException(Throwable cause) { super(cause); } }
2.在業務層中 校驗異常,並儲存異常資訊
public void activatioin(String code) throws UserException { /* * 1. 通過啟用碼查詢使用者 * 2. 如果User為null,說明是無效啟用碼,丟擲異常,給出異常資訊(無效啟用碼) * 3. 檢視使用者狀態是否為true,如果為true,丟擲異常,給出異常資訊(請不要二次啟用) * 4. 修改使用者狀態為true */ try { User user = userDao.findByCode(code); if(user == null) throw new UserException("無效的啟用碼!"); if(user.isStatus()) throw new UserException("您已經啟用過了,不要二次啟用!"); userDao.updateStatus(user.getUid(), true);//修改狀態 } catch(SQLException e) { throw new RuntimeException(e); } }
3.在控制層中捕獲異常,獲取自定義異常資訊,完成檢視轉發
public String activation(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { /* * 1. 獲取引數啟用碼 * 2. 用啟用碼呼叫service方法完成啟用 * > service方法有可能丟擲異常, 把異常資訊拿來,儲存到request中,轉發到msg.jsp顯示 * 3. 儲存成功資訊到request,轉發到msg.jsp顯示。 */ String code = req.getParameter("activationCode"); try { userService.activatioin(code); req.setAttribute("code", "success");//通知msg.jsp顯示對號 req.setAttribute("msg", "恭喜,啟用成功,請馬上登入!"); } catch (UserException e) { // 說明service丟擲了異常 req.setAttribute("msg", e.getMessage());//將異常資訊存放在msg屬性中 req.setAttribute("code", "error");//通知msg.jsp顯示X } return "f:/jsps/msg.jsp"; }