本文主要是介绍异常抛出和捕获——后端,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1. 自定义业务异常类:
/*** 自定义业务异常类*/
public class CustomException extends RuntimeException{public CustomException(String message){super(message);}
}
2.throw抛出异常
如下业务场景中,在对分类删除之前通过Lambda表达式来增加一个判断,如果分类关联了菜品,就不能直接删除,抛出异常throw new CustomException("..."),这就是之前在1中定义的CustomException。
/*** 根据id删除分类,删之前进行判断* @param id*/@Overridepublic void romove(Long id) {LambdaQueryWrapper<Dish> dishLambdaQueryWrapper = new LambdaQueryWrapper<>();//查询当前分类如果关类了菜品,抛出业务异常dishLambdaQueryWrapper.eq(Dish::getCategoryId, id);int count = dishService.count(dishLambdaQueryWrapper);if(count > 0){//已经关联菜品,抛出业务异常throw new CustomException("当前分类下关联了菜品,不能删除");}//正常删除super.removeById(id);}
3.全局捕获异常
/*** 异常处理方法* @return*/@ExceptionHandler(CustomException.class)public R<String> exceptionHandler(CustomException ex){log.error(ex.getMessage());return R.error(ex.getMessage());}
打印异常信息,并在页面显示。
这篇关于异常抛出和捕获——后端的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!