对于异常处理,大多使用一个共同的异常类统一处理从dao,service,controller层抛出的异常,将页面跳转到共同的error页面。

public class CommonException implements HandlerExceptionResolver {
/** 日志 **/
private Logger logger = LoggerFactory.getLogger(CommonException.class); /** 共同error处理页面 **/
private static final String COMMON_ERROR_PAGE = "/error/error";
/** 共同session超时处理页面 **/
private static final String COMMON_SESSION_PAGE = "/error/session"; /**
* 异常类的统一处理
*/
@Override
public ModelAndView resolveException(HttpServletRequest req, HttpServletResponse resp, Object obj,
Exception e) {
logger.debug(">>>resolveException(HttpServletRequest req, HttpServletResponse resp, Object obj,Exception e)");
ModelAndView mav = new ModelAndView();
// 默认error处理
mav.addObject("errorMsg", "数据处理异常,请重试或与管理员联系!");
mav.addObject("errorDetailMsg", e.getMessage());
mav.addObject("errorDetailCause", e.getCause());
mav.setViewName(COMMON_ERROR_PAGE);
// session超时处理
if(e instanceof SessionException) {
mav.addObject("errorMsg", "您因长时未操作会话超时,请点击【确定】,重新登录!");
mav.addObject("errorDetailMsg", (SessionException) e).getMsg());
mav.setViewName(COMMON_SESSION_PAGE);
}
logger.debug("<<<resolveException(HttpServletRequest req, HttpServletResponse resp, Object obj,Exception e)");
return mav;
}

注意需要实现 HandlerExceptionResolver 这个接口。

同时注册bean.

<bean class="com.****.CommonException"></bean>

统一异常处理拦截:

**
* description: 统一异常处理
*
* @Autor:DennyZhao
* @Date://
* @Version: 1.0.
*/
@ControllerAdvice
public class ApiExceptionHandler { /** 共同log信息 **/
protected final Logger logger = LoggerFactory.getLogger(ApiExceptionHandler.class); @ExceptionHandler()
@ResponseBody
String handleException(Exception e){
logger.error("未知异常", e);
return ScsErrorCode.ERROR_CODE_SCS_EP9999 + "出现未知异常," + e.getMessage();
}
}

Springmvc Exception的更多相关文章

  1. SpringMVC框架四:异常处理器

    .异常分为:预期异常.运行时异常 dao.service.controller三层中有异常,依次向上抛出直到SpringMVC处理. 而SpringMVC交给HandlerExceptionResol ...

  2. shiro与Web项目整合-Spring+SpringMVC+Mybatis+Shiro(八)

    Jar包

  3. SpringMVC参数绑定(四)

    1.默认支持的参数类型 处理器形参中添加如下类型的参数处理适配器会默认识别并进行赋值. HttpServletRequest 通过request对象获取请求信息 HttpServletResponse ...

  4. SpringMVC异常处理器

    本节内容: 异常处理思路 自定义异常类 自定义异常处理器 异常处理器配置 错误页面 异常测试 springmvc在处理请求过程中出现异常信息交由异常处理器进行处理,自定义异常处理器可以实现一个系统的异 ...

  5. SpringMVC异常处理注解@ExceptionHandler@ControllerAdvice@ResponseStatus

    参考: http://blog.csdn.net/w372426096/article/details/78429132 http://blog.csdn.net/w372426096/article ...

  6. springmvc中Controller前端控制器的映射与返回数据,以及异常处理

    .@RequestMapping映射 该注解中存的是映射路径的字符串 1.1 value的值是一个数组,也就是说可以定义多个访问路径,同时“.action”可以省略,前端控制器中主要查找主体部分.注意 ...

  7. SpringMVC 之拦截器和异常处理

    1. 文件上传 Spring 使用 Jakarta Commons FileUpload 技术实现了一个 MultipartResolver 实现类: CommonsMultipartResolver ...

  8. (转)SpringMVC学习(八)——SpringMVC中的异常处理器

    http://blog.csdn.net/yerenyuan_pku/article/details/72511891 SpringMVC在处理请求过程中出现异常信息交由异常处理器进行处理,自定义异常 ...

  9. SpringMVC重要注解 @ControllerAdvice

    @ControllerAdvice,是Spring3.2提供的新注解,从名字上可以看出大体意思是控制器增强.让我们先看看@ControllerAdvice的实现: package org.spring ...

随机推荐

  1. Ribbon Status Bar

    https://documentation.devexpress.com/#WindowsForms/CustomDocument2498 官方文档说明 A Ribbon Status Bar (Ri ...

  2. MongoDB GUI( Robo 3T) Shell使用及操作

    Robo 3T 下载及使用 之前叫 Robomongo,后面被收购了,改名 Robo 3T . 下载链接:https://robomongo.org/download (需要FQ) 安装步骤省略,下一 ...

  3. 转 WCF中同步和异步通讯总结

    我这样分个类: WCF中, 以同步.异步角度考虑通讯的方式分为四种:跨进程同步.跨进程异步.发送队列端同步.发送队列端异步.之所以造成这样的结果源于两个因素,一个是传统概念上的同异步,一个是对于WCF ...

  4. sql 防注入 维基百科

    http://zh.wikipedia.org/wiki/SQL%E8%B3%87%E6%96%99%E9%9A%B1%E7%A2%BC%E6%94%BB%E6%93%8A SQL攻击(SQL inj ...

  5. 快速接入PHP微信支付

    微信支付是微信开发中坑最多的一个功能,本文旨在帮助有开发基础的人快速接入微信支付,如果要详细了解微信支付,请看微信支付的开发文档. 再说把开发文档搬到这里来就没必要了.想要快速跑通微信支付的可以继续查 ...

  6. 关于lidroid xUtils 开源项目

    最近搜了一些框架供初学者学习,比较了一下XUtils是目前git上比较活跃 功能比较完善的一个框架,是基于afinal开发的,比afinal稳定性提高了不少,下面是介绍: xUtils简介 xUtil ...

  7. 关于Qt配置编译器的问题

    PC系统:win10 安装了:Visual Studio 2017 Community ; Qt 5.8.0 运行Qt程序时,出现以下错误: 原因:来自知乎 只安装了VS2017(MSVC 15.0) ...

  8. 【费马小定理+快速幂取模】ACM-ICPC 2018 焦作赛区网络预赛 G. Give Candies

    G. Give Candies There are N children in kindergarten. Miss Li bought them N candies. To make the pro ...

  9. Java-Runoob-高级教程-实例-数组:03. Java 实例 – 获取数组长度-*

    ylbtech-Java-Runoob-高级教程-实例-数组:03. Java 实例 – 获取数组长度 1.返回顶部 Java 实例 - 获取数组长度  Java 实例 本文我们将为大家介绍如何使用数 ...

  10. [转]NSIS:判断D盘存在与否确定安装路径

    转载自:http://www.flighty.cn/html/bushu/20140704_239.html   现在我们想实现这样的功能: 如果目标机器存在D盘,那么就安装程序到D盘,否则安装在系统 ...