如何优雅地实现异常处理

1.常见的异常处理方式

1.1返回码方式

    较为方便,但会造成代码耦合的问题

1.2异常

    代码耦合较少,下文将重点介绍这种方式。

2.异常处理的步骤

2.1定义业务异常类

     你可定义多个异常类,实现不同的业务常见抛出的异常,这里要继承RuntimeException,在controller层中可以不用捕获和处理。

public class UserServiceException extends RuntimeException {

    public UserServiceException(String message) {
        super(message);
    }
}

2.2编写业务层代码,遇到业务进行不下去的时候,抛出异常

@Controller
public class UserController {

    @Autowired
    private UserService userService;

    @PutMapping("{id}")
    public SimpleResult updateUser(@PathVariable String id){
        //接收数据,调用方法
        userService.updateUser(id);
        //准备返回的数据
        SimpleResult result = new SimpleResult();
        result.setResult("00");
        result.setResultMsg("成功");
        return result;
    }
}
@Service
public class UserService {


    public String updateUser(String id){

        if("123456".equals(id)) {
            throw new UserServiceException("该用户不存在");
        }
        return "aaaa";
    }
}

2.3编写顶层的异常处理机制

@ControllerAdvice
public class AppControllerAdvice {

    private static final Logger LOGGER = LoggerFactory.getLogger(AppControllerAdvice.class);

    @ResponseBody
    @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
    @ExceptionHandler(UserServiceException.class)
    private SimpleResult handleUserServicrException(UserServiceException userServiceException) {
        LOGGER.info(userServiceException.getLocalizedMessage());
        //定义异常返回的数据
        SimpleResult simpleResult = new SimpleResult();
        return simpleResult;
    }
}

3.其他注意事项

  •   异常处理的效率较低,不建议用于业务逻辑的处理方式,能将业务进行下去的时候,还是建议用逻辑判断的方式处理业务,只有因意外情况,业务无法往下走的时候,才考虑用上文所示的方法

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值