这篇文章主要介绍了异常处理的简单实现,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
为什么要配置异常处理?
正常的假如我们不配置异常处理,当发生报错的时候会直接跳转报错页面,显然不是很友好,所以我们可以通过配置异常处理器,对异常进行拦截,一旦发生异常我们可以给以提示,让他跳转到自己写的错误页面。
以下为两种异常处理器实现方式:
先自定义一个异常类
/**
* 自定义异常类
*/
public class SysException extends Exception{
// 存储提示信息的
private String message;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public SysException(String message) {
this.message = message;
}
}
1、实现HandlerExceptionResolver接口
/**
* 异常处理器
*/
public class SysExceptionResolver implements HandlerExceptionResolver{
/**
* 处理异常业务逻辑
* @param request
* @param response
* @param handler
* @param ex
* @return
*/
public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
System.out.println(request.getRequestURL());
// 获取到异常对象
SysException e = null;
if(ex instanceof SysException){
e = (SysException)ex;
}else{
e = new SysException("系统正在维护....");
}
// 创建ModelAndView对象
ModelAndView mv = new ModelAndView();
mv.addObject("errorMsg",e.getMessage());
mv.addObject("url",request.getRequestURL());
mv.setViewName("error");
return mv;
}
}
2、使用Spring提供的注解实现
/**
* 异常处理器
*/
@ControllerAdvice
public class SysExceptionResolver{
/**
* 处理异常业务逻辑
* @param request
* @param response
* @param handler
* @param ex
* @return
*/
@ExceptionHandler(Exception.class)
public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
// 获取到异常对象
SysException e = null;
if(ex instanceof SysException){
e = (SysException)ex;
}else{
e = new SysException("系统正在维护....");
}
// 创建ModelAndView对象
ModelAndView mv = new ModelAndView();
mv.addObject("errorMsg",e.getMessage());
mv.addObject("url",request.getRequestURL());
mv.setViewName("error");
return mv;
}
}
使用方法:
try {
// 模拟异常
int a = 10/0;
} catch (Exception e) {
// 打印异常信息
e.printStackTrace();
// 抛出自定义异常信息
throw new SysException("查询所有用户出现错误了...");
}