为了账号安全,请及时绑定邮箱和手机立即绑定

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

标签:
SpringBoot

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

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消