zoukankan      html  css  js  c++  java
  • @ControllerAdvice + @ExceptionHandler

    使用 @ControllerAdvice 注解处理全局异常
    实际开发中,需要对异常分门别类的进行处理,使用 @ControllerAdvice + @ExceptionHandler 注解能够处理全局异常,这种方式推荐使用,可以根据不同的异常对不 同的异常进行处理。
       使用方式:定义一个类,使用 @ControllerAdvice 注解该类,使用 @ExceptionHandler 注解方法
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <groupId>com.advice</groupId>
      <artifactId>ExceptionAdvice</artifactId>
      <version>0.0.1-SNAPSHOT</version>
    
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.0.0.RELEASE</version>
            <relativePath /> <!-- lookup parent from repository -->
        </parent>
    
        <properties>
            <!-- 声明项目配置依赖编码格式为 utf-8 -->
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
            <fastjson.version>1.2.24</fastjson.version>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-thymeleaf</artifactId>
            </dependency>
            <dependency>
                <groupId>org.webjars</groupId>
                <artifactId>jquery</artifactId>
                <version>3.3.1</version>
                
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
    
        </dependencies>
      
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
              <source>1.8</source>
              <target>1.8</target>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </project>
    package com.tszr.exception.controller;
    
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.Model;
    import org.springframework.web.bind.annotation.ControllerAdvice;
    import org.springframework.web.bind.annotation.ExceptionHandler;
    import org.springframework.web.bind.annotation.RequestMapping;
    @Controller
    @ControllerAdvice
    public class GlobalException {
        private static final Logger log = LoggerFactory.getLogger(GlobalException.class);
    
        @RequestMapping("/exceptionMethod")
        public String exceptionMethod(Model model) throws Exception {
            model.addAttribute("msg", "没有抛出异常");
            int num = 1 / 0;
            log.info(String.valueOf(num));
            return "index";
        }
    
        /**
         * 描述:捕获 ArithmeticException 异常
         * 
         * @param model 将Model对象注入到方法中
         * @param e     将产生异常对象注入到方法中
         * @return 指定错误页面
         */
    
        @ExceptionHandler(value = { ArithmeticException.class })
        public String arithmeticExceptionHandle(Model model, Exception e) {
            model.addAttribute("msg", "除数不能是0哦");
            model.addAttribute("msgg", "@ExceptionHandler" + e.getMessage() + "除数不能是0哦");
            System.out.println("****************************");
            System.out.println("****************************");
            System.out.println(e.getMessage());
            System.out.println("****************************");
            System.out.println("****************************");
            System.out.println(model.toString());
            log.info(e.getMessage());
            return "error";
        }
    }
    package com.tszr.exception;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    @SpringBootApplication
    public class ExceptionApplication {
        public static void main(String[] args) {
            SpringApplication.run(ExceptionApplication.class, args);
        }
    }

  • 相关阅读:
    数据结构-树与二叉树-思维导图
    The last packet successfully received from the server was 2,272 milliseconds ago. The last packet sent successfully to the server was 2,258 milliseconds ago.
    idea连接mysql报错Server returns invalid timezone. Go to 'Advanced' tab and set 'serverTimezone' property
    redis学习笔记
    AJAX校验注册用户名是否存在
    AJAX学习笔记
    JSON学习笔记
    JQuery基础知识学习笔记
    Filter、Listener学习笔记
    三层架构学习笔记
  • 原文地址:https://www.cnblogs.com/tszr/p/15447913.html
Copyright © 2011-2022 走看看