@ExceptionHandler 统一处理异常
1. 知识
@ExceptionHandler:用于在特定处理程序类和/或处理程序方法中处理异常的注释。
使用该注释注释的处理程序方法允许具有非常灵活的签名。它们可以有下列类型的参数,按任意顺序排列:
- 1.异常参数:声明为一般异常或更具体的异常。若要声明更为具体得参数,可用value来确定
- 2.请求和/或响应对象(通常来自Servlet API),可以选择任何特定的请求/响应类型:如 javax.servlet.http.HttpServletRequest
- 3.会话对象:通常是javax.servlet.http.HttpSession,这种类型的参数将强制出现相应的会话,参数不能为空,
- 4.当前请求区域设置的java.util.Locale
- 5.java.io.InputStream / java.io.Reader访问请求的内容
(参考翻译来自源码的文档)
目前只用过第一种,用来处理异常。 回顾之前java异常处理 主要有这几个关键字:try catch finally throw throws 如果要抛出具体明确的异常,则可以用 try catch来捕捉,若有些异常不做处理 直接抛出,则可以使用 throw(主要是在语句抛出),throws(主要是在方法上抛出);试想以前的代码,有时一段代码,业务逻辑如果复杂,一个try就有多个catch,代码看起来就给人一种很冗余的感觉;使用@RestControllerAdvice @ExceptionHandler统一拦截异常处理 争对不同的异常抛出,我可以做不同的异常拦截,对拦截的异常信息做统一处理(