spring boot全局异常捕捉

简介: Spring有帮我们做异常处理(页面跳转)有兴趣的可以研究研究BasicErrorController这个类,这是springboot处理异常的源码,它的原理很简单,就是判断请求头:Accept 是否是text/html,如果是返回view,如果不是返回json。

Spring有帮我们做异常处理(页面跳转)有兴趣的可以研究研究BasicErrorController这个类,这是springboot处理异常的源码,它的原理很简单,就是判断请求头:Accept 是否是text/html,如果是返回view,如果不是返回json。但是我们发现它的报错信息不太符合开发,所以我们需要自定义报错信息。

1. 首先创建自定义异常

创建一个自定义异常。

package com.laojiao.securitydemo.myexception;

/**
 * Created by Fant.J.
 */
public class UserNotExistException extends RuntimeException {

    private String id;

    public UserNotExistException(String id) {
        super("user not exist");
        this.id = id;

    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }
}

2. 创建异常处理类

package com.laojiao.securitydemo.myexception;

/**
 * 错误处理器:处理其他Controller出的异常
 * Created by Fant.J.
 */
@ControllerAdvice
public class ControllerException {

    @ExceptionHandler(UserNotExistException.class)   //需要处理的 异常类
    @ResponseBody   //json格式
    @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)   //响应状态:服务器内部错误异常
    public Map<String,Object> handleUserNotExistException(UserNotExistException ex){

        Map<String,Object> result = new HashMap<>();
        result.put("id",ex.getId());
        result.put("message",ex.getMessage());
        return result;
    }
}

我在这里返回json,所以用了@ResponseBody注解。

img_304f10306ef1585c7a6a6060e0a3d1eb.png
相关文章
|
16天前
|
Java 应用服务中间件 Maven
SpringBoot 项目瘦身指南
SpringBoot 项目瘦身指南
37 0
|
2月前
|
XML 监控 druid
【Java专题_02】springboot+mybatis+pagehelper分页插件+druid数据源详细教程
【Java专题_02】springboot+mybatis+pagehelper分页插件+druid数据源详细教程
|
3月前
|
Java
springboot项目打包瘦身
springboot项目打包瘦身
|
5月前
|
Java 测试技术
Springboot集成JUnit5优雅进行单元测试
Springboot集成JUnit5优雅进行单元测试
|
安全 Java Maven
Spring Boot资源文件问题总结(Spring Boot的静态资源访问,配置文件外置)
Spring Boot资源文件问题总结(Spring Boot的静态资源访问,配置文件外置)
1290 1
|
9月前
|
Java Maven
【Springboot】创建boot工程spring-boot-maven-plugin报红、出错_解决方案
【Springboot】创建boot工程spring-boot-maven-plugin报红、出错_解决方案
305 0
|
9月前
|
SQL druid 前端开发
让SpringBoot不需要Controller、Service、DAO、Mapper,卧槽!这款工具绝了!
让SpringBoot不需要Controller、Service、DAO、Mapper,卧槽!这款工具绝了!
|
11月前
|
Java C++ Spring
Spring Boot - ConfigDataEnvironmentPostProcessor(Boot 2.4)搞定配置文件加载优先级
Spring Boot - ConfigDataEnvironmentPostProcessor(Boot 2.4)搞定配置文件加载优先级
231 0
|
存储 XML JSON
【SpringBoot实战专题】「开发实战系列」从零开始教你舒服的使用RedisTemplate操作Redis数据
【SpringBoot实战专题】「开发实战系列」从零开始教你舒服的使用RedisTemplate操作Redis数据
136 0
【SpringBoot实战专题】「开发实战系列」从零开始教你舒服的使用RedisTemplate操作Redis数据
|
Java 关系型数据库 MySQL
玩“公主焊接”,顺便学习学习数据库关系映射与Spring Boot中MyBatis(SSM框架)的级联操作(bushi)
玩“公主焊接”,顺便学习学习数据库关系映射与Spring Boot中MyBatis(SSM框架)的级联操作(bushi)
311 0