java之异常统一处理
spring-mvc.xml
- <!-- aop -->
- <aop:aspectj-autoproxy/>
- <beans:bean id="controllerAop" class="com.financial.server.aop.ControllerAOP"/>
- <aop:config><!-- 环绕通知 统一捕捉controller方法抛出的异常并进行处理 -->
- <aop:aspect id="myAop" ref="controllerAop">
- <aop:pointcut expression="@annotation (org.springframework.web.bind.annotation.RequestMapping)" id="target"/>
- <aop:around method="handlerControllerMethod" pointcut-ref="target"/>
- </aop:aspect>
- </aop:config>
controller层拦截处理异常
- package com.financial.server.aop;
- import java.lang.reflect.Method;
- import java.util.Map;
- import org.apache.log4j.Logger;
- import org.aspectj.lang.ProceedingJoinPoint;
- import org.aspectj.lang.Signature;
- import org.aspectj.lang.reflect.MethodSignature;
- import org.springframework.web.servlet.ModelAndView;
- import com.financial.server.util.ResultBean;
- public class ControllerAOP {
- private static final Logger logger = Logger.getLogger(ControllerAOP.class);
- public Object handlerControllerMethod(ProceedingJoinPoint pjp) {
- long startTime = System.currentTimeMillis();
- Object result;
- Signature s = pjp.getSignature();
- MethodSignature ms = (MethodSignature) s;
- Method m = ms.getMethod();
- try {
- result = pjp.proceed();
- logger.info
- (pjp.getSignature() + "接口用时:" + (System.currentTimeMillis() - startTime) + "毫秒");
- } catch (Throwable e) {
- result = handlerException(pjp, e, m.getReturnType().getSimpleName());
- }
- return result;
- }
- private Object handlerException(ProceedingJoinPoint pjp, Throwable e, String returnName) {
- e.printStackTrace();
- if ("ModelAndView".equals(returnName)) {
- ModelAndView mv = new ModelAndView("error");
- return mv;
- } else if ("ResultBean".equals(returnName)) {
- ResultBean result = new ResultBean();
- logger.error(pjp.getSignature() + " error ", e);
- result.setMsg("服务器异常!请稍后重试!");
- result.setCode(result.FAILTRUE);
- // 异常这里可以做其他操作,如通知邮件,单独写到某个文件等等。
- logger.info(e, e);
- logger.error(e.getMessage(), e);
- return result;
- } else if ("String".equals(returnName)) {
- return "error1";
- } else {
- return "error";
- }
- }
- }
测试方法
- @RequestMapping("/aa")
- public ModelAndView aa() throws Exception{
- throw new Exception("aa");
- }
- @RequestMapping("/bb")
- public String bb() throws Exception{
- throw new Exception("bb");
- }
- @RequestMapping("/cc")
- @ResponseBody
- public ResultBean cc() throws Exception{
- throw new Exception("aa");
- }
java之异常统一处理的更多相关文章
- 【Java Web开发学习】Spring MVC异常统一处理
[Java Web开发学习]Spring MVC异常统一处理 文采有限,若有错误,欢迎留言指正. 转载:https://www.cnblogs.com/yangchongxing/p/9271900. ...
- 《java中异常和错误》
异常和错误的区别. 异常: 在Java中程序的错误主要是语法错误和语义错误,一个程序在编译和运行时出现的错误我们统一称之为异常,它是VM(虚拟机)通知你的一种方式,通过这种方式,VM让你知道,你(开发 ...
- spring @ExceptionHandler注解方式实现异常统一处理
首先,在我们的工程中新建BaseController父类,内容如下: package com.ztesoft.zsmartcity.framework.exception; import java.i ...
- Spring MVC的异常统一处理方法
我们经常需要统一配置项目的异常处理,又希望统一处理异常代码,同时不侵入原有的正常代码.我们可以通过以下三种方式实现统一处理项目的自定义异常. 通过SimpleMappingExceptionResol ...
- JAVA基础——异常详解
JAVA异常与异常处理详解 一.异常简介 什么是异常? 异常就是有异于常态,和正常情况不一样,有错误出错.在java中,阻止当前方法或作用域的情况,称之为异常. java中异常的体系是怎么样的呢? 1 ...
- java的异常和java web容器的异常
一.java的异常,只要catch住异常了,程序就不会挂,依然会执行catch之后的语句 Java程序发生异常就挂了吗? 为了验证程序不会挂,我写了个例子给大家看看. 测试代码: import jav ...
- 【Java】异常类处理层次
异常处理简介 异常在java的开发中可能没有那么被重视.一般遇到异常,直接上抛,或者随便catch一下处理之后对于程序整体运行也没有什么大的影响.不过在企业级设计开发中,异常的设计与处理的好坏,往往就 ...
- Java ConcurrentModificationException 异常分析与解决方案
Java ConcurrentModificationException 异常分析与解决方案http://www.2cto.com/kf/201403/286536.html java.util.Co ...
- Spring MVC异常统一处理(包括普通请求异常以及ajax请求异常)
通常SpringMVC对异常的配置都是返回某个jsp视图给用户,但是通过ajax方式发起请求,即使发生异常,前台也无法获得任何异常提示信息.因此需要对异常进行统一的处理,对于普通请求以及ajax请求的 ...
随机推荐
- FTP文件传输
FTP项目作业要求:1.用户加密认证2.允许同时多用户登录3.每个用户有自己的家目录,且只能访问自己的家目录4.对用户进行磁盘配额,每个用户的可用空间不同5.允许用户在ftp server上随意切换目 ...
- SQL Server Management Studio最新版下载地址
https://docs.microsoft.com/zh-cn/sql/ssms/download-sql-server-management-studio-ssms?view=sql-server ...
- 【SVD、特征值分解、PCA关系】
一.SVD 1.含义: 把矩阵分解为缩放矩阵+旋转矩阵+特征向量矩阵. A矩阵的作用是将一个向量从V这组正交基向量的空间旋转到U这组正交基向量的空间,并对每个方向进行了一定的缩放,缩放因子就是各 ...
- postman测试iop中url时的idtoken
记得填写 X-Auth-Token 对应cookies中的 token_id
- (转)深度教程:POS和POW全解析
如果你是一名资深的比特币矿工或商人,你一定听说过POW和POS,但是当前在国内,却几乎没有人明白这到底是什么意思,也几乎没有相关的中文资料,小编吐血撰写,是为了让大家更好理解这些概念. 读完本文, ...
- 读取Request body方法
一:传统方法 StringBuilder stringBuilder = new StringBuilder(); BufferedReader bufferedReader = null; try ...
- Sql注入基础原理介绍
说明:文章所有内容均截选自实验楼教程[Sql注入基础原理介绍]~ 实验原理 Sql 注入攻击是通过将恶意的 Sql 查询或添加语句插入到应用的输入参数中,再在后台 Sql 服务器上解析执行进行的攻击, ...
- Roslyn编译器
概要 微软官方开源的C#/VB编译器.作为.net 2015的重要名角,负责将代码编译成IL,另外提供丰富的API用于代码分析,vs2015的实时代码分析就是使用的Roslyn提供的API. C#6. ...
- centos7.x docker安装及配置,持续更新
1. 安装docker-ce [root],ce为docker社区版,免费,ee版为企业版,收费 列出所有已安装docker # rpm -qa | grep docker 删除已安装docker # ...
- java详解内部类
可以将一个类的定义放在另一个类的定义内部,这就是内部类. 内部类是一个非常有用的特性但又比较难理解使用的特性(鄙人到现在都没有怎么使用过内部类,对内部类也只是略知一二). 第一次见面 内部类我们从外面 ...