zoukankan      html  css  js  c++  java
  • WEB 项目中的全局异常处理

      在web 项目中,遇到异常一般有两种处理方式:try.....catch....throw

      通常情况下我们用try.....catch.... 对异常进行捕捉处理,可是在实际项目中随时的进行异常捕捉,会造成代码重复和繁杂,我们希望代码中只有业务相关的操作,所有的异常我们单独设立一个类来处理它。

      首先,我们在可能发生异常的方法,全部throw出来,即dao抛给serviceservicecontrollercontroller抛给前端控制器;

      然后由前端控制器调用 全局异常处理器  对异常进行统一处理

      

      全局异常处理器处理思路:

        首先解析出异常类型;

          如果该 异常类型是系统 自定义的异常,直接取出异常信息,在错误页面展示

          如果该 异常类型不是系统 自定义的异常,构造一个自定义的异常类型(信息为“未知错误”)(应为一般业务异常我们并不希望被用户知道,防止代码泄露,造成不安全)

          自定义异常一般是业务异常,这个异常的信息应该告知客户,系统异常一般是代码异常,一般写日志

      SpringMVC提供一个HandlerExceptionResolver接口,全局异常处理器实现此接口

       定义一个全局异常处理类:将客户异常的消息放入ModelAndView的model中,并在error页面中显示出来

    public class ExceptionResolver implements HandlerExceptionResolver{
      //该方法的的参数会自动获取 请求(request),响应(response),异常(exception),handler(异常参数的处理器 Controller)
        public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler,
                Exception ex) {
            ModelAndView mav = new ModelAndView();
            if(ex instanceof CustomException){
                //用户异常
                mav.addObject("message", ex.getMessage());
                mav.setViewName("error");
            }else{
           //系统异常 mav.addObject(
    "message", "系统出现异常,请稍后访问"); mav.setViewName("error"); } return mav; } }

        在SpringMVC中生成该对象:

    <!--配置异常对象处理器  该类要实现HandlerExceptionResolver接口  -->
              <bean class="com.lh.excrption.ExceptionResolver"></bean>
  • 相关阅读:
    Spark Streaming Programming Guide
    Apache Kafka Replication Design – High level
    Apache Kafka源码分析 – Log Management
    Apache Kafka源码分析 – Broker Server
    Big Data资料汇总
    Spark 源码分析 -- task实际执行过程
    Spark源码分析 – 汇总索引
    Spark源码分析 – Shuffle
    C# Windows form application 播放小视频
    leetcode第一刷_Sudoku Solver
  • 原文地址:https://www.cnblogs.com/lhblogs/p/7489246.html
Copyright © 2011-2022 走看看