统一异常处理的使用
以下是一个会出现数组越界的例子,当出现问题时,通常使用try catch 将出现异常的代码块包起来,美观度极差!!! ,通过使用spring的异常处理可以将所有的异常统一起来处理,不仅提高美观度,最主要是减少trycatch的重复使用。
@Controller
public class TestController {
@ResponseBody
@RequestMapping(value = "/hello",method = {RequestMethod.GET})
public String hello(HttpServletRequest request, HttpServletResponse response)
{
response.setContentType("application/json");
ArrayList list = new ArrayList();
list.get(100);//数组越界
return "hello";
}
}
只需添加如下类 使用@ControllerAdvice 控制增强,配合@ExceptionHandler使用 ,当发生数组越界异常则会使用IndexOutOfBoundsExceptionHandler方法统一对异常进行处理,当出现该类未处理的异常时,统一交给commonExceptionHandler对异常进行处理。
@ControllerAdvice
public class DefaultExceptionHandler {
/**
* 公共异常处理
* @param e
* @return
*/
@ExceptionHandler(value = {Exception.class})
public String commonExceptionHandler(Exception e){
System.out.println(e.getMessage());
return e.getMessage();
}
/**
* 处理数组越界
* @param e
* @return
*/
@ExceptionHandler(value = {IndexOutOfBoundsException.class})
public String IndexOutOfBoundsExceptionHandler(Exception e){
System.out.println(e.getMessage());
return e.getMessage();
}
}