Spring Boot入门——全局异常处理

Posted Miss_wang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Boot入门——全局异常处理相关的知识,希望对你有一定的参考价值。

1、后台处理异常

  a、引入thymeleaf依赖

    <!-- thymeleaf模板插件 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>

  b、在application.properties文件中设置属性

#关闭thymeleaf模板的缓存
spring.thymeleaf.cache=false 

  c、编写后台处理Handler  

import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;

@ControllerAdvice
public class GlobalExceptionHandler {

  //设置此handler处理所有异常 @ExceptionHandler(value
=Exception.class) public void defaultErrorHandler(){ System.out.println("-------------default error"); } }

  d、后台异常打印

-------------default error
2017-06-16 14:54:05.314  WARN 6892 --- [nio-8080-exec-1] .m.m.a.ExceptionHandlerExceptionResolver : Resolved exception caused by Handler execution: org.springframework.dao.IncorrectResultSizeDataAccessException: result returns more than one elements; nested exception is javax.persistence.NonUniqueResultException: result returns more than one elements

2、页面处理异常

  a、修改Handler

import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

@ControllerAdvice
public class GlobalExceptionHandler {

    @ExceptionHandler(value=Exception.class)
    @ResponseBody
    public String defaultErrorHandler(){
        System.out.println("-------------default error");
        return "系统错误,请联系管理员";
    }
}

  b、页面访问结果

    

3、页面处理异常,使用模板页面

  a、编写html模板页面

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org"  
      xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3">
<head>
<meta charset="UTF-8" />
<title>Insert title here</title>
</head>
<body>
    <h1 th:inlines="text">异常出现啦</h1>
    <p th:text="${messages}"></p>
</body>
</html>

   b、修改Handler

 

  @ExceptionHandler(value=Exception.class)
    public ModelAndView defaultErrorHandler(Exception e){
        ModelAndView modal = new ModelAndView();
        modal.setViewName("/exception");
        modal.addObject("messages", e.getMessage());
        return modal;
    }

 

  c、测试结果

       

 

以上是关于Spring Boot入门——全局异常处理的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot 2.X:全局异常处理

Spring Boot 全局异常处理,这样写才优雅...

Spring Boot-全局异常处理

峰哥说技术系列-9 Spring Boot ControllerAdvice处理全局异常 - 副本

Spring Boot2 系列教程(十三)Spring Boot 中的全局异常处理

spring boot 全局异常处理