spring统一异常处理

  1. 统一异常处理的使用

统一异常处理的使用

以下是一个会出现数组越界的例子,当出现问题时,通常使用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();
	}
}