瑞吉外卖实战学习--6、通过try和catch进行异常处理

效果图

在这里插入图片描述

前言

当用户名重复数据库会报错,此时就需要捕获异常操作

1、公共拦截器进行异常处理

在这里插入图片描述

1.1、创建公共报错处理的方法

在这里插入图片描述

1.2、@ControllerAdvice中设置要拦截的类

在这里插入图片描述

1.3、@ExceptionHandler中写处理的异常类

在这里插入图片描述

package com.example.ruiji_demo.common;

import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import java.sql.SQLIntegrityConstraintViolationException;

/**
 * @author jitwxs
 * @date 2024年03月30日 22:24
 */
@ControllerAdvice(annotations = {RestController.class, Controller.class})
@ResponseBody
@Slf4j
public class GlobalExceptionHandler {

    @ExceptionHandler(SQLIntegrityConstraintViolationException.class)
    public R<String> exceptionHandler(SQLIntegrityConstraintViolationException ex){
        log.error(ex.getMessage());
        return R.error("添加失败了");
    }
}

在这里插入图片描述

2、完善错误拦截器

获取到是否是含有Duplicate entry的错误,如果是就提取出来名称,然后添加到报错信息
在这里插入图片描述

package com.example.ruiji_demo.common;

import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import java.sql.SQLIntegrityConstraintViolationException;

/**
 * @author jitwxs
 * @date 2024年03月30日 22:24
 */
@ControllerAdvice(annotations = {RestController.class, Controller.class})
@ResponseBody
@Slf4j
public class GlobalExceptionHandler {

    /**
     * 异常处理方法
     * @param ex
     * @return
     */
    @ExceptionHandler(SQLIntegrityConstraintViolationException.class)
    public R<String> exceptionHandler(SQLIntegrityConstraintViolationException ex){
        log.error(ex.getMessage());
//        获取到是否是含有Duplicate entry的错误,如果是就提取出来名称,然后添加到报错信息
        if(ex.getMessage().contains("Duplicate entry")){
            String[] split = ex.getMessage().split(" ");
            String msg = split[2] + "已存在";
            return R.error(msg);
        }
        return R.error("添加失败");
    }
}

2.1、效果

在这里插入图片描述

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-03 20:38:06       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-03 20:38:06       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-03 20:38:06       82 阅读
  4. Python语言-面向对象

    2024-04-03 20:38:06       91 阅读

热门阅读

  1. 面试算法-128-单词拆分 II

    2024-04-03 20:38:06       40 阅读
  2. RabbitMQ

    2024-04-03 20:38:06       31 阅读
  3. Ceph常用命令总结

    2024-04-03 20:38:06       35 阅读
  4. 面试题多态结合线程

    2024-04-03 20:38:06       40 阅读
  5. MATLAB 按照索引提取点云 (56)

    2024-04-03 20:38:06       45 阅读
  6. Qt控件样式设置其一(常见方法及优缺点)

    2024-04-03 20:38:06       34 阅读
  7. Neo4j基础知识

    2024-04-03 20:38:06       39 阅读
  8. Spring中最常用的11个扩展点

    2024-04-03 20:38:06       32 阅读
  9. ctf.show_web11

    2024-04-03 20:38:06       38 阅读
  10. C++ //练习 11.11 不使用decltype重新定义bookstore。

    2024-04-03 20:38:06       37 阅读