Spring MVC 全局异常处理:最佳实践和代码示例
"Spring MVC 全局异常处理:最佳实践和代码示例"\n\n在 Spring MVC 中,您可以通过使用 @ControllerAdvice 注解来定义全局异常处理类,以便处理应用程序中抛出的未被捕获的异常。\n\n首先,您需要在全局异常处理类上添加 @ControllerAdvice 注解,表明该类是一个全局异常处理类。然后,您可以使用 @ExceptionHandler 注解来定义具体的异常处理方法。\n\njava\n@ControllerAdvice\npublic class GlobalExceptionHandler {\n\n @ExceptionHandler(Exception.class)\n public ModelAndView handleException(Exception e) {\n ModelAndView modelAndView = new ModelAndView();\n modelAndView.addObject(\"errorMessage\", e.getMessage());\n modelAndView.setViewName(\"error\" );\n return modelAndView; \n }\n}\n\n\n在上面的例子中,我们定义了一个 handleException 方法,用来处理所有类型的异常。在该方法中,您可以根据需要进行异常处理,并返回一个 ModelAndView 对象,用来指定异常处理后跳转的页面。\n\n需要注意的是,全局异常处理类需要被 Spring 扫描到,您可以通过配置 @ComponentScan 注解或在配置文件中配置来实现。\n\n此外,您还可以为不同的异常类型定义不同的异常处理方法。例如,为 NullPointerException 定义一个单独的异常处理方法:\n\njava\n@ControllerAdvice\npublic class GlobalExceptionHandler {\n\n @ExceptionHandler(NullPointerException.class)\n public ModelAndView handleNullPointerException(NullPointerException e) {\n ModelAndView modelAndView = new ModelAndView();\n modelAndView.addObject(\"errorMessage\", \"空指针异常\");\n modelAndView.setViewName(\"error\" );\n return modelAndView; \n }\n}\n\n\n在上面的例子中,我们定义了一个 handleNullPointerException 方法,用来处理 NullPointerException 异常。在该方法中,您可以根据需要进行异常处理,并返回一个 ModelAndView 对象。\n\n除了使用 ModelAndView 对象来跳转页面外,您还可以使用 @ResponseBody 注解来直接返回 JSON 数据。\n\njava\n@ControllerAdvice\npublic class GlobalExceptionHandler {\n\n @ExceptionHandler(Exception.class)\n @ResponseBody\n public Map<String, Object> handleException(Exception e) {\n Map<String, Object> result = new HashMap<>();\n result.put(\"errorMessage\", e.getMessage());\n return result; \n }\n}\n\n\n在上面的例子中,我们将 handleException 方法的返回值类型改为 Map<String, Object>,并添加 @ResponseBody 注解,表示直接返回 JSON 数据。\n\n通过以上配置,您就可以实现在应用程序中统一处理异常的功能了。无论是在控制器层还是服务层,只要有未被捕获的异常抛出,都会被全局异常处理类捕获并进行相应的处理。\n\n
原文地址: https://www.cveoy.top/t/topic/qk9J 著作权归作者所有。请勿转载和采集!