全局的异常处理
1,配置异常解析器
SimpleMappingExceptionResolver 或者实现HandlerExceptionResolver接口自动以异常解析器
2,直接用全局的异常处理注解(@ControllerAdvice)
@ExceptionHandler(单用的话只能拦截当前类,配合@ControllerAdvice可以拦截所有的controller)
在异常处理的通知逻辑方法中可以控制遇到异常之后是跳转页面,还是返回json
跳转页面
protected ModelAndView handleViewError(String url, String errorStack, String errorMessage, String viewName) {
ModelAndView mav = new ModelAndView();
mav.addObject("exception", errorStack);
mav.addObject("url", url);
mav.addObject("message", errorMessage);
mav.addObject("timestamp", new Date());
mav.setViewName(viewName);
return mav;
}
返回json
protected ModelAndView handleAjaxError(HttpServletResponse rsp, String errorMessage, HttpStatus status) throws IOException {
rsp.setCharacterEncoding("UTF-8");
rsp.setStatus(status.value());
PrintWriter writer = rsp.getWriter();
writer.write(errorMessage);
writer.flush();
return null;
}
在J2EE项目的开发中,不管是对底层的数据库操作过程,还是业务层的处理过程,还是控制层的处理过程,都不可避免会遇到各种可预知的、不可预知的异常需要处理。每个过程都单独处理异常,系统的代码耦合度高,工作量大且不好统一,维护的工作量也很大。 那么,能不能将所有类型的异常处理从各处理过程解耦出来,这样既保证了相关处理过程的功能较单一,也实现了异常信息的统一处理和维护?答案是肯定的。下面将介绍使用Spring MVC统一处理异常的解决和实现过程
- 使用Spring MVC提供的SimpleMappingExceptionResolver
- 实现Spring的异常处理接口HandlerExceptionResolver 自定义自己的异常处理器
- 使用@ExceptionHandler注解实现异常处理
(一) SimpleMappingExceptionResolver
使用这种方式具有集成简单、有良好的扩展性、对已有代码没有入侵性等优点,但该方法仅能获取到异常信息,若在出现异常时,对需要获取除异常以外的数据的情况不适用。
(二) HandlerExceptionResolver
相比第一种来说,HandlerExceptionResolver能准确显示定义的异常处理页面,达到了统一异常处理的目标
1.定义一个类实现HandlerExceptionResolver接口,这次贴一个自己以前的代码
2.加入spring的配置中,这里只贴出了相关部分
(三)@ExceptionHandler
这是笔者现在项目的使用方式,这里也仅贴出了相关部分
1.首先定义一个父类,实现一些基础的方法
2.针对你需要捕捉的异常实现相对应的处理方式
以上就三种处理方式,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
相关推荐
主要介绍了详解Spring全局异常处理的三种方式,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
### Spring Cloud Gateway全局异常处理详解 #### 一、引言 在微服务架构中,网关作为服务入口,承担着路由转发、限流熔断、鉴权认证等职责。Spring Cloud Gateway作为一款基于Spring Framework 5、Project Reactor...
3.处理日志时,需要在每一个try-catch块包含一些处理代码,有时候异常处理的代码比正常执行代码还多,污染正常执行代码。 4.同样类型异常有不同的处理方式,使最终的处理变得复杂。 5.接口抛出异常,破坏封装,打破...
Springboot全局异常处理demo 项目的开发中,不管是对底层的数据库操作过程,还是业务层的处理过程,还是控制层的处理过程,都不可避免会遇到各种可预知的、不可预知的异常需要处理。每个过程都单独处理异常,系统的...
例如,在Spring框架中,使用@ControllerAdvice和@ExceptionHandler注解可以定义全局异常处理类和方法。当应用程序中发生异常时,Spring会自动调用该方法来处理异常。这种方法适用于在全局范围内处理所有类型的异常。...
三、Spring Cloud Gateway中的全局异常处理 在Spring Cloud Gateway中,不能直接用@ControllerAdvice来处理全局异常。通过跟踪异常信息的抛出,找到对应的源码,自定义一些处理逻辑来符合业务的需求。网关都是给...
在Spring Boot应用中,全局异常处理是至关重要的一个部分,它确保了系统在遇到错误时能够优雅地响应,提供统一的错误信息,并且保持良好的用户体验。这篇教程将深入讲解如何在Spring Boot中实现全局异常处理。 首先...
Spring Boot 全局异常处理整理
全局异常处理是软件开发中的一个重要概念,特别是在大型项目或复杂系统中,确保程序在遇到错误时能够优雅地处理并提供反馈至关...不论你是在哪个开发环境或使用哪种编程语言,都应该重视并熟练掌握全局异常处理的技巧。
详解 SpringCloud Finchley Gateway 统一异常处理 SpringCloud Finchley Gateway 统一异常处理是指在使用 SpringCloud Finchley 版本的 Gateway 时,如何统一处理系统级异常的方法。默认情况下,SpringCloud ...
主要介绍了详解Spring Boot2 Webflux的全局异常处理,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
springboot 全局异常处理.捕捉全局异常,转换格式,以友好方式提示客户正确的操作步骤. 避免系统错误出现在用户勉强,造成不良使用体验.
1. **全局异常处理**: Spring Boot 提供了优雅的方式来进行全局异常处理,通过实现`ErrorController`接口或者自定义`@ControllerAdvice`类,可以捕获并统一处理所有控制器层的异常。例如,创建一个`...
总结来说,Spring Cloud Gateway全局异常处理的实现是通过自定义`ErrorWebExceptionHandler`来完成的,它允许我们控制异常的处理方式,确保在各种异常情况下都能返回统一格式的响应。这对于提升系统的稳定性和用户...
总结,Spring MVC的异常处理机制提供了多种方式来优雅地处理程序中的异常。通过合理使用`@ExceptionHandler`、`@ControllerAdvice`以及`HandlerExceptionResolver`,你可以创建健壮且易于维护的Web应用,同时提供...
在Spring Boot应用中,全局异常处理是至关重要的一个部分,它能确保系统在遇到错误时,仍然能够优雅地响应客户端,提供友好的错误信息,而不是返回默认的、未经处理的堆栈跟踪。本教程将详细介绍如何在Spring Boot中...
以上就是关于全局异常处理的一些基础知识,无论是在哪种编程语言中,全局异常处理都是保障程序健壮性的重要手段。正确使用它可以提高软件的稳定性,同时也能提供更好的用户体验。在实际开发中,我们需要根据具体的...
第19章spring-mvc之全局异常处理
总结来说,"利用SpringMVC切面捕获全局异常入库源码"项目展示了如何使用Spring AOP来替代传统的`HandlerExceptionResolver`实现全局异常处理。通过创建自定义切面和后置通知,可以捕获任何未被特定控制器方法处理的...