@ExceptionHandler

注解处理异常的方法

Annotation for handling exceptions in specific handler classes and/or handler methods.

Handler methods which are annotated with this annotation are allowed to have very flexible signatures(可变参数列表). They may have parameters of the following types, in arbitrary order(随意的顺序):

  • An exception argument: declared as a general Exception or as a more specific exception. This also serves as a mapping hint if the annotation itself does not narrow the exception types through its value().

  • Request and/or response objects (typically from the Servlet API): You may choose any specific request/response type, e.g. ServletRequest / HttpServletRequest.

  • Session object: typically HttpSession. An argument of this type will enforce the presence of a corresponding session. As a consequence, such an argument will never be null. Note that session access may not be thread-safe, in particular in a Servlet environment: Consider switching the "synchronizeOnSession" flag to "true" if multiple requests are allowed to access a session concurrently.

  • WebRequestor NativeWebRequest: Allows for generic request parameter access as well as request/session attribute access, without ties to the native Servlet API.

  • Locale for the current request locale (determined by the most specific locale resolver available, i.e. the configured LocaleResolver in a Servlet environment).

  • InputStream / Reader for access to the request's content. This will be the raw InputStream/Reader as exposed by the Servlet API.

  • OutputStream / Writer for generating the response's content. This will be the raw OutputStream/Writer as exposed by the Servlet API.

  • Model as an alternative to returning a model map from the handler method. Note that the provided model is not pre-populated with regular model attributes and therefore always empty, as a convenience for preparing the model for an exception-specific view.

The following return types are supported for handler methods:

  • A ModelAndView object (from Servlet MVC).
  • A Model object, with the view name implicitly determined through a RequestToViewNameTranslator.
  • A Map object for exposing a model, with the view name implicitly determined through a RequestToViewNameTranslator.
  • A View object.
  • A String value which is interpreted as view name.
  • @ResponseBody annotated methods (Servlet-only) to set the response content. The return value will be converted to the response stream using message converters.
  • An HttpEntity<?> or ResponseEntity<?> object (Servlet-only) to set response headers and content. The ResponseEntity body will be converted and written to the response stream using message converters.
  • void if the method handles the response itself (by writing the response content directly, declaring an argument of type ServletResponse / HttpServletResponse for that purpose) or if the view name is supposed to be implicitly determined through a RequestToViewNameTranslator (not declaring a response argument in the handler method signature).

In Servlet environments, you can combine the ExceptionHandler annotation with @ResponseStatus, to define the response status for the HTTP response.

results matching ""

    No results matching ""