关键词:
出自于:https://blog.csdn.net/he90227/article/details/46309297 ---- 利用Spring进行统一异常处理的两种方式。
原文:https://blog.csdn.net/he90227/article/details/46309297?utm_source=copy
1.实现接口HandlerExceptionResolver
package com.jay.platform.exception.handler; import java.io.IOException; import java.net.ConnectException; import java.net.SocketTimeoutException; import java.util.Date; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.log4j.Logger; import org.springframework.web.servlet.HandlerExceptionResolver; import org.springframework.web.servlet.ModelAndView; import com.jay.platform.exception.AjaxException; import com.jay.platform.exception.BusinessException; /** * * @ClassName: ExceptionHandler * @Description: 统一异常处理 , 注意这里可以处理Controller层抛出的异常,但不处理Controller捕获的异常(Controller捕获的异常,这里不再处理) * @author Jay He * @date 2014年11月4日 上午10:22:11 * */ public class ExceptionHandler implements HandlerExceptionResolver { private static final Logger LOGGER = Logger .getLogger(ExceptionHandler.class); @Override public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) { LOGGER.error(new Date().toLocaleString() + "异常信息", ex); if (ex instanceof NumberFormatException) { return new ModelAndView("exception/number"); } else if (ex instanceof NullPointerException) { return new ModelAndView("exception/null"); } else if (ex instanceof BusinessException) { return new ModelAndView("exception/business"); } else if (ex instanceof SocketTimeoutException || ex instanceof ConnectException) { try { response.getWriter().write("网络异常"); } catch (IOException e) { e.printStackTrace(); } return new ModelAndView("exception/net_error"); }else if(ex instanceof AjaxException){ System.out.println("-=-="); } return new ModelAndView("exception/exception"); } }
2.继承AbstractHandlerExceptionResolver类
package com.jay.platform.exception.handler; import java.io.IOException; import java.net.ConnectException; import java.net.SocketTimeoutException; import java.util.Date; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.log4j.Logger; import org.springframework.web.servlet.HandlerExceptionResolver; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver; import com.jay.platform.exception.AjaxException; import com.jay.platform.exception.BusinessException; /** * * @ClassName: ExceptionHandler * @Description: 统一异常处理 , 注意这里可以处理Controller层抛出的异常,但不处理Controller捕获的异常(Controller捕获的异常,这里不再处理) * @author Jay He * @date 2014年11月4日 上午10:22:11 * */ public class ExceptionHandler extends AbstractHandlerExceptionResolver{ private static final Logger LOGGER = Logger .getLogger(ExceptionHandler.class); @Override protected ModelAndView doResolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) { <pre name="code" class="java">LOGGER.error(new Date().toLocaleString() + "异常信息", ex); if (ex instanceof NumberFormatException) { return new ModelAndView("exception/number"); } else if (ex instanceof NullPointerException) { return new ModelAndView("exception/null"); } else if (ex instanceof BusinessException) { return new ModelAndView("exception/business"); } else if (ex instanceof SocketTimeoutException || ex instanceof ConnectException) { try { response.getWriter().write("网络异常"); } catch (IOException e) { e.printStackTrace(); } return new ModelAndView("exception/net_error"); }else if(ex instanceof AjaxException){ System.out.println("-=-="); } return new ModelAndView("exception/exception");
在配置文件中添加自定义异常处理模块
<!-- Spring MVC的统一异常处理 --> <bean id="exceptionResolver" class="com.jay.platform.exception.handler.ExceptionHandler"/>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Error页面</title> </head> <body> <center> <h1>Error页面</h1><br> <h2>出错信息</h2> <br><br> 错误描述 <br> ${errorTips } <br><br> <br><br> 错误异常信息栈 <br><br> ${ex } </center> </body> </html>
Spring 是不是有更简单的异常处理技术?
】Spring是不是有更简单的异常处理技术?【英文标题】:IsthereasimplerexceptionhandlingtechniqueforSpring?Spring是否有更简单的异常处理技术?【发布时间】:2018-12-0303:31:51【问题描述】:我已经阅读了有关使用@ExceptionHandler的基于控制器... 查看详情
spring中的统一异常处理
在具体的SSM项目开发中,由于Controller层为处于请求处理的最顶层,再往上就是框架代码的。因此,肯定需要在Controller捕获所有异常,并且做适当处理,返回给前端一个友好的错误码。不过,Controller一多,我们发现每个Controller... 查看详情
Spring:RestController 和 Controller 的不同异常处理程序
】Spring:RestController和Controller的不同异常处理程序【英文标题】:Spring:DifferentexceptionhandlerforRestControllerandController【发布时间】:2017-09-0515:30:01【问题描述】:在Spring中,您可以通过@ControllerAdvice和@ExceptionHandler注解设置“全局”... 查看详情
spring全局异常处理
最近学习Spring时,认识到Spring异常处理的强大。之前处理工程异常,代码中最常见的就是try-catch-finally,有时一个try,多个catch,覆盖了核心业务逻辑:1try{2..........3}catch(Exception1e){4..........5}catch(Exception2e){6...........7}catch(Exception3e)... 查看详情
基于spring注解aop的异常处理
一、前言 项目刚刚开发的时候,并没有做好充足的准备。开发到一定程度的时候才会想到还有一些问题没有解决。就比如今天我要说的一个问题:异常的处理。写程序的时候一般都会通过try...catch...finally对异常进行处理,但... 查看详情
Spring GenericFilterBean 中的异常处理
】SpringGenericFilterBean中的异常处理【英文标题】:ExceptionhandlinginSpringGenericFilterBean【发布时间】:2015-10-0809:08:33【问题描述】:我已经实现了基于令牌的身份验证(没有弹簧安全性)。所以在GenericFilterBean中,它会检查并声明令... 查看详情
Spring Boot Endpoints 中的异常处理
】SpringBootEndpoints中的异常处理【英文标题】:ExceptionhandlinginSpringBootEndpoints【发布时间】:2017-09-1421:47:22【问题描述】:我正在尝试处理具有SOAP端点和Rest控制器的SpringBoot应用程序中的异常。捕获发生在REST控制器中的异常非常... 查看详情
Spring Boot 异常处理数据库错误的自定义异常?
】SpringBoot异常处理数据库错误的自定义异常?【英文标题】:SpringBootExceptionHandlingcustomExceptionsforDatabaseErrors?【发布时间】:2022-01-1218:02:12【问题描述】:我为运行时可能发生的各种错误创建了多个自定义异常。为此,我使用了@... 查看详情
spring中的统一异常处理方式
源自:https://segmentfault.com/a/1190000016236188 在具体的SSM项目开发中,由于Controller层为处于请求处理的最顶层,再往上就是框架代码的。 因此,肯定需要在Controller捕获所有异常,并且做适当处理,返回给前端一个友好的... 查看详情
如何优雅地处理 Spring Security 中未由 ControllerAdvice 处理的异常?
】如何优雅地处理SpringSecurity中未由ControllerAdvice处理的异常?【英文标题】:HowtogracefullyhandleexceptionsinSpringSecuritynothandledbyControllerAdvice?【发布时间】:2016-07-0513:15:04【问题描述】:我最近在我的Spring4/HibernateWeb应用程序中实现了... 查看详情
在 Spring 中的 @Transactional 方法期间处理异常
】在Spring中的@Transactional方法期间处理异常【英文标题】:Handlingexceptionsduringa@TransactionalmethodinSpring【发布时间】:2018-10-1312:11:48【问题描述】:我试图找出如何结合Spring的@Transactional最好地处理持久性(以及可能的其他)异常。... 查看详情
spring自带kafka消息异常处理
参考技术A方法onMessage会执行注解@KafkaListener指定的方法报异常会catch到,继续下一条消息,如果设置的是自动提交offset,则kafka认为此消息消费成功异常处理的实现类,打印日志,仅此而已 查看详情
Spring Boot 异常自定义处理 - 意外的 HTTP 状态
】SpringBoot异常自定义处理-意外的HTTP状态【英文标题】:SpringbootExceptioncustomhandling-UnexpectedHTTPstatus【发布时间】:2019-02-2502:14:41【问题描述】:我正在尝试在我的SpringBoot应用程序中实现一些自定义异常处理程序,这些处理程序... 查看详情
特定注解方法的 Spring Boot 异常处理
】特定注解方法的SpringBoot异常处理【英文标题】:Springbootexceptionhandlingforspecificannotatedmethods【发布时间】:2016-11-1003:28:06【问题描述】:我们的SpringBoot控制器具有由ajax调用的方法以及呈现CRUD模板的标准方法。我们希望能够用... 查看详情
Spring Security 认证异常处理
】SpringSecurity认证异常处理【英文标题】:Springsecurityauthenticateexceptionshandling【发布时间】:2012-09-2517:14:02【问题描述】:我有一个使用SpringSecurity3.0.x的应用程序。我有一个自定义的AuthenticationProvider:publicclassAppAuthenticationProvider... 查看详情
spring处理异常的办法
...页面传递的数据与后台javabean绑定时发生异常怎么处理org.springframework.validation.BindException参考技术A方法有如下几种:1.trycatch2.直接抛出3.包装成其他形式的异常抛出如:thrownewRuntimeException("ExceptionMessage")参考资料:还有其... 查看详情
测试期间spring webflux中的全局异常处理
】测试期间springwebflux中的全局异常处理【英文标题】:Globalexceptionhandlinginspringwebfluxduringtests【发布时间】:2020-03-2321:50:39【问题描述】:我正在使用springwebflux开发服务。我使用@ControllerAdvice实现了异常处理。它工作得很好,但... 查看详情
Spring Boot + 调度程序 + Spring Data JPA + Oracle 中的异常处理
】SpringBoot+调度程序+SpringDataJPA+Oracle中的异常处理【英文标题】:ExceptionHandlinginSpringBoot+Schedulers+SpringDataJPA+Oracle【发布时间】:2022-01-1212:58:10【问题描述】:我正在尝试找出所有异常可以被处理/捕获和处理的其他方式,例如将... 查看详情