1.产生异常代码
String a = "a3"; intb = Integer.parseInt(a);
2.自定义异常类
继承关系:DataAccessException 继承ServiceExceptioextends RestWebServiceException继承Exception
这样做的好处就是:dao层异常抛DataAccessException 这样service层可以覆盖到(子类的异常)然后在网上抛,到rest层,抛RestWebServiceException (也是可以get到service层异常的)
最后统一由拦截器,拦截所以异常然后统一处理。这样做的好处是可以打印错误的行数-好定位问题。
如果自己try catch了,那么在try内报错只在throw Exception时记录行数,也就是这能记录throw那一行无法定位try里哪一行
publicclass DataAccessException extends ServiceException { privatestaticfinallongserialVersionUID = 1L; private String retCd; // 异常对应的返回码 private String msgDes; // 异常对应的描述信息 public DataAccessException() { super(); } public DataAccessException(String message) { super(message); msgDes = message; } public DataAccessException(String retCd, String message) { super(); this.retCd = retCd; this.msgDes = message; } public DataAccessException( Throwable throwable) { super(throwable); } public DataAccessException(String message,Throwable throwable) { super(message,throwable); msgDes = message; } public DataAccessException(String retCd, String message,Throwable throwable) { super(message,throwable); this.retCd = retCd; this.msgDes = message; }
publicclass ServiceException extends RestWebServiceException { privatestaticfinallongserialVersionUID = 1L; private String retCd; // 异常对应的返回码 private String msgDes; // 异常对应的描述信息 。。。同上
publicclass RestWebServiceException extends Exception { privatestaticfinallongserialVersionUID = 1L; private String retCd; // 异常对应的返回码 private String msgDes; // 异常对应的描述信息
看看,到层和service层,rest层如何处理的
//service层直接抛出异常即可 publicint addComUser(ComUser user) throwsServiceException{ return comUserMapper.insert(user); }
看看拦截器如何实现: /** * 异常拦截器 * @author:andy * @version:1.0 */ publicclass ErrorInterceptor extends AbstractPhaseInterceptor<Message> { Logger logger = LoggerFactory.getLogger(getClass()); public ErrorInterceptor(String phase) { super(phase); } public ErrorInterceptor(){ super(Phase.RECEIVE); } @Override publicvoid handleMessage(Message msg) throws Fault { } //出现错误输出错误信息和栈信息 publicvoid handleFault(Message message) { //可以拦截所以异常除了WebApplicationException Exception exeption=message.getContent(Exception.class); logger.error(exeption.getMessage(),exeption);//只有logger.xxx("",e);2个参数的可以打印异常详细信息,其他参数的函数都不行 } }
//rest层,也是直接抛出异常,不要自己try catch。 @GET @Path("/getUserById/{id}") public ComUser getComUserById(@PathParam("id") intid) throws RestWebServiceException{ ComUser user = null; user = comUserService.getComUserById(id); //业务返回 if(null == user){ ResponseBuilder builder = Response.status(Status.BAD_REQUEST); builder.type(MediaType.APPLICATION_JSON); builder.entity(new ResultJson(ResultJson.FAILURE,"访问数据不存在")); thrownew WebApplicationException(builder.build()); } return user; }
相关推荐
9. 控制器层统一的异常拦截机制,利用@ControllerAdvice统一对异常拦截,具体见com.stylefeng.guns.core.aop.GlobalExceptionHandler类。 10. 页面统一的js key-value单例模式写法,每个页面生成一个唯一的全局变量,...
在这个“自定义拦截器(实现异常处理+细颗粒权限控制)”的项目中,我们将深入探讨如何利用拦截器进行异常管理和权限控制。 首先,拦截器在Struts2中的工作原理是基于AOP(面向切面编程)的概念。当一个请求被发送...
在SpringMVC框架中,拦截器(Interceptor)和异常处理是两个重要的概念,它们对于构建健壮、可维护的Web应用程序至关重要。本文将深入探讨这两个主题,并解释它们如何协同工作以提升应用性能和用户体验。 首先,让...
通过这种方式,开发者可以根据需求自定义拦截器链,实现特定的功能。 4. **应用场景** - **日志和追踪**:记录请求的详细信息,用于调试和性能分析。 - **安全性**:进行身份验证和授权,确保只有合法用户能访问...
拦截器是AOP(面向切面编程)的一部分,可以在操作执行前后执行额外的逻辑,如日志记录、性能跟踪、事务管理等。在Asp.NET MVC中,拦截器可以通过实现`IActionFilter`、`IAuthorizationFilter`、`IResultFilter`等...
- 自定义拦截器需要继承`HandlerInterceptor` 或 `HandlerInterceptorAdapter` 类,并重写相关方法。 - `preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)`:在请求处理之前...
Struts2 拦截器是基于 Java 的开源框架 Apache Struts 2 中的一个核心功能,它允许开发者在请求处理之前、之后或者整个过程中插入自定义的逻辑。拦截器是 Struts2 框架中实现业务逻辑控制、权限验证、日志记录等功能...
8. `exception` 拦截器:处理Action执行过程中的异常,将其映射为特定的结果,便于统一错误处理。 9. `fileUpload` 拦截器:处理文件上传请求,解析HTTP请求中的文件域内容,实现文件上传功能。 10. `il8n` 拦截器...
通过在控制器方法调用前或后插入自定义代码,拦截器可以实现事务管理、日志记录、权限验证等功能。 2. **创建自定义拦截器**: 创建自定义拦截器通常涉及以下步骤: - 定义一个类,实现特定框架提供的拦截器接口...
在Struts2中,拦截器(Interceptor)是一个至关重要的概念,它增强了MVC框架的功能,使得开发者可以对请求处理进行预处理和后处理,实现如日志记录、权限验证、事务管理等通用操作。下面我们将深入探讨Struts2拦截器...
在Spring MVC中,我们可以通过实现HandlerInterceptor接口或者继承AbstractHandlerInterceptorAdapter类来创建自定义拦截器。 ### 2. 过滤器 过滤器则遵循Servlet规范,适用于任何基于Servlet容器的Web应用,不...
Struts2是一个强大的MVC框架,它允许开发者通过拦截器来增强应用的功能,比如日志记录、事务管理、权限验证等。本实例主要关注的是“权限验证拦截器”,这是一个用于确保用户具有访问特定资源所需权限的关键组件。 ...
- 前后端统一异常拦截处理,统一输出异常,避免繁琐的判断 - 自定义扩展Mybatis-Plus的功能 - 高效率开发,代码生成器可一键生成前后端代码 - 完善的日志记录体系简单注解即可实现 系统功能 - 用户管理:提供用户的...
通过定义一系列拦截器并设置它们的执行顺序,你可以实现如日志记录、权限验证、性能监控等通用功能,而无需在每个Action中重复编写这些代码。 二、拦截器的结构与工作原理 1. 拦截器栈:Struts2中的拦截器不是单独...
3. 对异常处理进行统一,确保拦截器的健壮性。 通过理解并正确使用文件拦截器,开发者可以在保证系统安全的同时,提升文件操作的灵活性和效率。在Structs2这样的框架中,拦截器是实现这一目标的强大工具。
Java自定义拦截器是Java开发中一种常见的设计模式,它主要用于在执行某个操作或方法之前进行额外的处理,如权限检查、日志记录等。在Java Web应用中,特别是使用Struts2框架时,拦截器扮演着至关重要的角色。下面...
在Spring Boot框架中,拦截器(Interceptor)是一个重要的组件,它允许我们在处理请求之前或之后执行自定义逻辑。Spring Boot基于Spring MVC,因此其拦截器机制与Spring MVC中的拦截器类似。下面我们将深入探讨...
Struts2 拦截器是JavaWeb开发中Struts2框架的核心组件之一,它基于AOP(面向切面编程)理念,允许开发者在Action方法执行前后插入自定义逻辑。拦截器与Servlet中的过滤器虽然在功能上有相似之处,但它们在设计和使用...
SpringBoot 拦截器是 SpringBoot 应用中一种重要的功能组件,它允许开发者在请求处理前后执行自定义逻辑,比如权限校验、日志记录、性能监控等。SpringBoot 拦截器基于Spring MVC框架中的HandlerInterceptor接口实现...
拦截器是CXF框架中的一个重要组成部分,允许开发者在服务调用的生命周期中插入自定义逻辑,实现如日志记录、安全检查、性能监控等功能。本篇将深入探讨CXF拦截器的理论基础,并演示如何为CXF的客户端和服务端添加...