继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

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

天秋
关注TA
已关注
手记 12
粉丝 5
获赞 554

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的记录

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

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

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP