Java教程

SpringBoot 小白--3(统一异常处理)

本文主要是介绍SpringBoot 小白--3(统一异常处理),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1. 统一异常处理配置

package com.yangxz.response;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.dao.DuplicateKeyException;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * 统一异常处理
 */
@ControllerAdvice
public class GlobalExceptionHandlerAdvice {

    Logger logger = LoggerFactory.getLogger(GlobalExceptionHandlerAdvice.class);

    @ExceptionHandler(value = Exception.class)
    @ResponseBody
    public R exceptionHandler(HttpServletRequest request, HttpServletResponse response, Exception exception) {
        logger.info("异常类型:" + exception.getClass().getSimpleName());

        String msg = "出错了。。。";
        String data = null;

        /*根据异常类型,设置不同的数据*/
        if (exception instanceof DuplicateKeyException) {
            data = "字段冲突";
//            response.setStatus(404);
        }

        return R.error().message(msg).data(data);

    }

}


2. userController添加用户新增接口

package com.yangxz.controller;


import com.yangxz.dto.UserDTO;
import com.yangxz.entity.User;
import com.yangxz.service.UserService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.List;

/**
 * <p>
 * 前端控制器
 * </p>
 *
 * @author yangxz
 * @since 2022-06-30
 */
@Api(tags = "用户管理")
@RestController
@RequestMapping("/user")
public class UserController {

    @Resource
    private UserService userService;

    @ApiOperation("用户列表")
    @GetMapping("/list")
    public List<User> list() {
        return userService.list();
    }

    @ApiOperation("用户新增")
    @PostMapping("/add")
    public String add(@RequestBody UserDTO.AddDTO dto) {
        User user = new User();
        user.setUsername(dto.getUsername());
        user.setPassword(dto.getPassword());
        return userService.save(user) ? "新增成功" : "新增失败";
    }

}


3. 新增用户新增请求体

package com.yangxz.dto;

import lombok.Data;

@Data
public class UserDTO {

    @Data
    public static class AddDTO{
        private String username;
        private String password;
    }

}


4. 测试用户新增接口

user表中对username设置了唯一索引,插入相同的数据就会报错,数据库中已经有一条admin的记录

https://img2.sycdn.imooc.com/62bd3e480001695c18821048.jpg

https://img4.sycdn.imooc.com/62bd3e6500015bd519200969.jpg

这篇关于SpringBoot 小白--3(统一异常处理)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!