• Springmvc Exception


    对于异常处理,大多使用一个共同的异常类统一处理从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:2019/8/26
     * @Version: 1.0.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();
        }
    }
  • 相关阅读:
    etcd扩展使用
    etcd注册服务
    net core微服务构建方案
    一个简化的插件框架c#
    NSQ消息队列
    c#一些处理解决方案(组件,库)
    c#网络传输
    c#的传输组件dotnetty
    c#网络加密传输
    C++ Boost在Windows和Linux下的编译安装
  • 原文地址:https://www.cnblogs.com/DennyZhao/p/8472796.html
Copyright © 2020-2023  润新知