当前位置: 代码迷 >> 综合 >> 自定义Exception异常初体验
  详细解决方案

自定义Exception异常初体验

热度:42   发布时间:2023-10-28 11:21:50.0

使用场景:删除检查项,先在数据库中查询该项有没有被添加到检查组,若查询到已被添加,则返回这个自定义的异常

自定义异常:

package com.jacob.entity;public class CheckItemDeleteException extends Exception{public CheckItemDeleteException() {}public CheckItemDeleteException(String message) {super(message);}
}

 

 

检查项service impl,检查项服务接口实现类
//删除检查项,先查询要删除的检查项有没有被添加到检查组public void delete(String itemId) throws CheckItemDeleteException {int countCheckItem = checkItemDao.countCheckItem(itemId);if (countCheckItem!=0){ //Add exception to method signature,直接在方法抛出异常,交给上层处理throw new CheckItemDeleteException("该项已被添加到检查组");}else{checkItemDao.delete(itemId);}}

不能这样:这样异常抛不到上层

 //删除检查项,先查询要删除的检查项有没有被添加到检查组public void delete(String itemId)  {int countCheckItem = checkItemDao.countCheckItem(itemId);if (countCheckItem!=0){try {throw new CheckItemDeleteException("该项已被添加到检查组");} catch (CheckItemDeleteException e) {e.printStackTrace();}}else{checkItemDao.delete(itemId);}}

 

Controller层,可以定位出发生了什么异常,而不是简单的返回删除失败

@RequestMapping("/delete")/* @RequestBody主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据的);*/public Result delete(String itemId){try {checkItemService.delete(itemId);} catch (Exception e) {if(e instanceof CheckItemDeleteException){return new Result(false,"该项已被添加到检查组");}return new Result(false, MessageConstant.DELETE_CHECKITEM_FAIL);}return new Result(true, MessageConstant.DELETE_CHECKITEM_SUCCESS);}

 

  相关解决方案