異常處理器就是把異常加工一下返回給用戶,如果後臺報錯了可以給用戶顯示成服務器異常
創建一個用戶存儲信息的實體類
public class SysException extends Exception {
//存儲提示信息
private String message;
@Override
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public SysException(String message) {
this.message = message;
}
}
創建一個異常處理類
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* 異常處理器
*/
public class SysExceptionResolver implements HandlerExceptionResolver {
/**
* 處理異常的邏輯
* @param request
* @param response
* @param o
* @param ex
* @return
*/
@Override
public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object o, Exception ex) {
//準備獲取異常對象
SysException e = null;
if (ex instanceof SysException){
e = (SysException) ex;
}else{
e = new SysException("系統正在維護....");
}
//創建對象
ModelAndView mv = new ModelAndView();
mv.addObject("errorMsg",e.getMessage());
mv.setViewName("error");
return mv;
}
}
然後在controller裏這樣調用
@RequestMapping("testException")
public String testException() throws SysException {
try {
int a = 10/0;
} catch (Exception e) {
e.printStackTrace();
throw new SysException("查詢所有的用戶出現了錯誤");
}
return"success";
}
當然還有一步是在springmvc配置一下他的bean
<bean id="sysExceptionResolver" class="cn.itcast.exception.SysExceptionResolver"/>