思路:
解析出異常類型
如果該異常類型是系統自定義的異常,直接取出異常資訊,在錯誤頁面展示
如果該異常類型不是系統自定義的異常,構造一個自定義的異常類型(資訊為“未知錯誤”)
步驟一
public class CustomExceptionResolver implements HandlerExceptionResolver {
public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler,
Exception ex) {
ex.printStackTrace();
GyException gyException = null;
//如果抛出的是系統自定義的異常則直接轉換
if(ex instanceof GyException) {
gyException = (GyException) ex;
} else {
//如果抛出的不是系統自定義的異常則重新構造一個未知錯誤異常
//這裡我就也有CustomException省事了,實際中應該要再定義一個新的異常
gyException = new GyException("系統未知錯誤");
}
// 向前台傳回錯誤資訊
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("message", gyException.getMessage());
modelAndView.setViewName("custom_error");
return modelAndView;
}
}
步驟二:springmvc的配置檔案中注冊全局異常處理器
<bean class="com.test.validator.controller.exception.CustomExceptionResolver"></bean>
步驟三抛出異常
public String ecxeption(HttpServletRequest httpServletRequest , HttpServletResponse httpServletResponse ,User user) throws Exception {
if(user.getUserName()==null) {
System.out.println("使用者名不能為空");
throw new GyException("使用者名不能為空");
}
return "custom_error";
}
步驟4頁面取出錯誤資料
${message}