zoukankan      html  css  js  c++  java
  • SpringMVC听课笔记(十四:异常处理)

    1. SpringMVC通过HandlerExceptionResolver处理程序的异常,包括Handler映射,数据绑定以及目标方法执行时发生的异常

    2.SpringMVC提供的HandlerExceptionResolver的实现类:(标注红×的已被废弃)

      

         

      -- 其中被SpringMVC默认装配的

        

    3. ExceptionHandlerExceptionResolver

      -- 在@ExceptionHandler 方法的入参中可以加入Exception类型的参数,该参数即对应发生的异常对象

      -- 在@ExceptionHandler方法的入参中不能传入Map。若希望把异常信息传到页面上,需要使用ModelAndView作为返回值

      -- @ExceptionHandler方法标记的异常有优先级问题。优先抛出距离自己近的父类

      -- @ControllerAdvice  :如果在当前方法找不到@ExceptionHandler标记的方法,则去@ControllerAdvice 标记的类中寻找相应的方法

    @ControllerAdvice
    public class ExceptionHandlerHandler {
    
        @ExceptionHandler(value= {RuntimeException.class})
        public ModelAndView testExceptionHandler2(Exception ex) {
            System.out.println("[RuntimeException]出异常了...");
            System.out.println(ex);
            ModelAndView mv = new ModelAndView("error");
            mv.addObject("exception", ex);
            return mv;
        }
        
        @ExceptionHandler(value= {ArithmeticException.class})
        public ModelAndView testExceptionHandler(Exception ex) {
            System.out.println("[ArithmeticException]出异常了...");
            System.out.println(ex);
            ModelAndView mv = new ModelAndView("error");
            mv.addObject("exception", ex);
            return mv;
        }
    }

    4. ResponseStatusExceptionResolver

      -- 在异常及异常父类中找到@ResponseStatus注解,然后使用这个注解的属性进行处理

      -- 定义一个@ResponseStatus注解修饰的异常类

      -- 若在处理器方法中抛出了上述异常:若ExceptionHandlerExceptionResolver不解析异常。由于触发的异常 UnauthorizedException带有@ResponseStatus注解。因此会被ResponseStatusExceptionResolver解析到。最后响应HttpStatus.UNAUTHORIZED代码给客户端。HttpStatus.UNAUTHORIZED代表响应码401,无权限。关于其他响应码可参考HttpStatus枚举类型源码

    5. DefaultHandlerExceptionResolver

      -- 对一些特殊异常进行处理,具体可参看源码,比如

        

    6.SimpleMappingExceptionResolver

      -- 如果希望对所有异常进行统一处理,可以使用SimpleMappingExceptionResolver,它将异常类名映射为视图名,即发生异常时使用对应的视图报告异常

      -- SimpleMappingExceptionResolver会在requestScope请求域中放入属性“exception” 来对应所抛出的异常

        可通过exceptionAttribute更改属性名

        

      -- 若exceptionMappings 的prop的Key 为空时,将映射所有异常

        

  • 相关阅读:
    升级windows 11小工具
    windows 10更新升级方法
    您需要了解的有关 Oracle 数据库修补的所有信息
    Step by Step Apply Rolling PSU Patch In Oracle Database 12c RAC Environment
    Upgrade Oracle Database Manually from 12.2.0.1 to 19c
    如何应用版本更新 12.2.0.1.210420(补丁 32507738 – 2021 年 4 月 RU)
    xtrabackup 安装、备份和恢复
    Centos_Lvm expand capacity without restarting CentOS
    Centos_Lvm_Create pv vg lv and mount
    通过全备+relaylog同步恢复被drop的库或表
  • 原文地址:https://www.cnblogs.com/heyboom/p/11338837.html
Copyright © 2011-2022 走看看