SpringMVC---统一处理异常
统一处理异常
Spring MVC框架在接收到请求后,会自动调用处理请求的方法,如果调用的控制器中方法抛出异常,Spring MVC会捕获到此异常对象, 并尝试调用统一处理异常的机制,如果没有统一处理异常的机制,则会响应500错误。
关于统一处理异常,需要自定义类,在类上添加@ControllerAdvice注解,添加此注解的类中的注解方法将可以作用于每一次处理请求的过程。
然后,在类中添加处理异常的方法,关于此方法:
-
访问权限:应该使用public 返回值类型:参考控制器中处理请求的方法 假设,需要响应某字符串到客户端,则使用String作为返回值类型,并结合@ResponseBody注解一起使用,或者,使用@RestControllerAdvice替代@ControllerAdvice,则此类中所有方法向客户端响应时,都是响应正文的 方法名称:自定义 参数列表:必须至少包含1个异常类型,此参数就是Spring MVC框架调用控制器的方法后捕获的异常,并且,可以按需添加HttpServletRequest、HttpServletResponse等少量指定类型的参数,不可以添加其它参数 注解:必须添加@ExceptionHandler注解 在以上统一处理异常的类中,统一处理异常的方法可以有多个(处理的异常必须不同,但允许存在继承关系),通常, 建议在此类中添加一个能够处理任何异常的方法,避免某些异常未被处理导致响应500错误(用户不明确错误的原因,可能继续尝试错误的操作):
@ExceptionHandler
public String handleThrowable(Throwable e) {
log.error("统一处理未明确处理的异常【{}】,将向客户端响应:{}", e.getClass().getName(), e.getMessage());
return "服务器忙,请联系管理员!";
}
