方式一:

        CatalogPO deleteTarget = null;
/** 查询是否存在 **/
deleteTarget = catalogMapper.findByCatalogId(catalogId);
if (Objects.isNull(deleteTarget)) {
log.warn("the delete catalog is not existed");
throw new WhBuCatalogException(HttpStatus.INTERNAL_SERVER_ERROR, ErrorCode.SUFIX_DB_DELETE, "要删除的服务目录不存在");
}
/** 判断是不是是预置服务目录 **/
if (deleteTarget.getPreseted() == 1) {
log.warn("the preseted catalog is not allow delete");
throw new WhBuCatalogException(HttpStatus.INTERNAL_SERVER_ERROR, ErrorCode.SUFIX_DB_DELETE, "预置服务目录不允许删除");
}
/** 判断服务目录是否有绑定的服务 **/
Metadata metadata = new Metadata();
metadata.setFilter(new TreeMap<>());
metadata.getFilter().put("catalogId", catalogId.toString());
metadata.setPaginationParam(new PaginationParam(1,1000,1000));
List<WhBuService> services = catalogMapper.listBindedServices(metadata);
if (CollectionUtils.isNotEmpty(services)) {
log.warn("the catalog has bind service is not allow delete");
throw new WhBuCatalogException(HttpStatus.INTERNAL_SERVER_ERROR, ErrorCode.SUFIX_DB_DELETE, "服务目录绑定有服务不允许删除");
}
try {
List<Long> ids = findCatalogIdAndChildIds(catalogId);
catalogMapper.deleteCatalogByIds(ids);
return mapper.map(deleteTarget,CatalogDO.class);
} catch (Exception e) {
log.error("delete catalog error,{}", e);
throw new WhBuCatalogException(HttpStatus.INTERNAL_SERVER_ERROR, ErrorCode.SUFIX_DB_DELETE, "删除服务目录方法失败");
}

红色地方抛出异常,则紫色的地方不会继续执行

方式二:

        CatalogPO deleteTarget = null;
try {
/** 查询是否存在 **/
deleteTarget = catalogMapper.findByCatalogId(catalogId);
if (Objects.isNull(deleteTarget)) {
log.warn("the delete catalog is not existed");
throw new WhBuCatalogException(HttpStatus.INTERNAL_SERVER_ERROR, ErrorCode.SUFIX_DB_DELETE, "要删除的服务目录不存在");
}
/** 判断是不是是预置服务目录 **/
if (deleteTarget.getPreseted() == 1) {
log.warn("the preseted catalog is not allow delete");
throw new WhBuCatalogException(HttpStatus.INTERNAL_SERVER_ERROR, ErrorCode.SUFIX_DB_DELETE, "预置服务目录不允许删除");
}
/** 判断服务目录是否有绑定的服务 **/
Metadata metadata = new Metadata();
metadata.setFilter(new TreeMap<>());
metadata.getFilter().put("catalogId", catalogId.toString());
metadata.setPaginationParam(new PaginationParam(1,1000,1000));
List<WhBuService> services = catalogMapper.listBindedServices(metadata);
if (CollectionUtils.isNotEmpty(services)) {
log.warn("the catalog has bind service is not allow delete");
throw new WhBuCatalogException(HttpStatus.INTERNAL_SERVER_ERROR, ErrorCode.SUFIX_DB_DELETE, "服务目录绑定有服务不允许删除");
}
} catch (Exception e) {
log.error("delete catalog error,{}", e);
}
try {
List<Long> ids = findCatalogIdAndChildIds(catalogId);
catalogMapper.deleteCatalogByIds(ids);
return mapper.map(deleteTarget,CatalogDO.class);
} catch (Exception e) {
log.error("delete catalog error,{}", e);
throw new WhBuCatalogException(HttpStatus.INTERNAL_SERVER_ERROR, ErrorCode.SUFIX_DB_DELETE, "删除服务目录方法失败");
}

红色地方抛出异常,则紫色的地方还会继续执行

try-catch+thows异常范围说明的更多相关文章

  1. 异常处理的捕捉:try{}catch(异常类 变量)finally{最终执行}

    可以对异常进行针对性处理的方式.try{ //需要被检查的异常 }catch(异常类  变量)//该变量用于接收发生的异常{ //处理异常的代码 }finally{ //一定会被执行的代码. }

  2. “全栈2019”Java异常第十二章:catch与异常匹配

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java异 ...

  3. C++异常处理解析: 异常的引发(throw), 捕获(try catch)、异常安全

    前言: C++的异常处理机制是用于将运行时错误检测和错误处理功能分离的一 种机制(符合高内聚低耦合的软件工程设计要求),  这里主要总结一下C++异常处理的基础知识, 包括基本的如何引发异常(使用th ...

  4. 为什么catch了异常,但事务还是回滚了?

    前几天我发了这篇文章<我来出个题:这个事务会不会回滚?>得到了很多不错的反馈,也有不少读者通过微信.群或者邮件的方式,给了我一些关于test4的回复.其中还有直接发给我测试案例,来证明我的 ...

  5. 在 SQL Server 中使用 Try Catch 处理异常

    如何在 SQL Server 中使用 Try Catch 处理错误? 从 SQL Server 2005 开始,我们在TRY 和 CATCH块的帮助下提供了结构错误处理机制.使用TRY-CATCH的语 ...

  6. C#程序如何捕捉未try/catch的异常——不弹“XXX已停止工作”报错框

    诚意满满直接上代码: static void Main(string[] args) { //Main函数中增加此句 AppDomain.CurrentDomain.UnhandledExceptio ...

  7. SQL Server 中使用 Try Catch 处理异常

    CREATE TABLE ErrorLog( errNum INT, ErrSev ), ErrState INT, ErrProc ), ErrLine INT, ErrMsg ) ) CREATE ...

  8. 前端魔法堂——异常不仅仅是try/catch

    前言  编程时我们往往拿到的是业务流程正确的业务说明文档或规范,但实际开发中却布满荆棘和例外情况,而这些例外中包含业务用例的例外,也包含技术上的例外.对于业务用例的例外我们别无它法,必须要求实施人员与 ...

  9. (后端)异常不仅仅是try/catch

    前言  编程时我们往往拿到的是业务流程正确的业务说明文档或规范,但实际开发中却布满荆棘和例外情况,而这些例外中包含业务用例的例外,也包含技术上的例外.对于业务用例的例外我们别无它法,必须要求实施人员与 ...

随机推荐

  1. 批量得到/修改word超链接

    Alt+F9或者勾选下面 此时的超链接地址全部转换为文本形式进行显示; 然后可以用全局替换搜索来处理

  2. Java 9 模块化(Modularity)

    JDK9的发布一直在推迟,终于在2017年9月21日发布了.下面是JDK9的几个下载地址: JDK9.0.1 Windows-x64下载地址 Oracle Java 官网下载地址 OpenJDK 9官 ...

  3. VB6 如何创建一个标准控制台程序

    打开 VB6 并新建一个标准EXE程序,把窗口删掉,然后再加入一个模块. 在模块中加入AllocConsole.FreeConsole.SetConsoleTitle.Sleep的API声明: Pub ...

  4. WDA-FPM-4-用OVP做查询跳转到明细

    转载:https://www.cnblogs.com/sapSB/p/10100697.html   FPM四:用OVP做查询跳转到明细 前面做了查询的UIBB配置,在这边可以直接复用,查询的feed ...

  5. UGUI Auto Layout 自动布局

    Layout Element 首先分配 Minimum Size 如果还有足够空间,分配 Preferred Size 如果还有额外空间,分配 Flexible Size 比较特别的是 Flexibl ...

  6. 获得Variant类型

    function GetVariantType(const v: variant): string; begin   case TVarData(v).vType of     varEmpty: r ...

  7. 列表中语句 python

    找到两个列表中相同元素: list1 = [1,2,3,4,5] list2 = [4,5,6,7,8] print ([l for l in list1 if l in list2]) 输出: [4 ...

  8. 【Java】JVM(四)、虚拟机参数配置

    1. -Xms20M      JVM启动时候的内存大小为20M   2. -Xmx20M     JVM内存最大值是20M 将其与Xms大小一致可以避免JVM内存自动扩展   3. -Xss128K ...

  9. 大型运输行业实战_day10_1_自定义事务管理类

    1.创建事务管理类  TransactionManager.java package com.day02.sation.transaction; import com.day02.sation.uti ...

  10. 读《asp.net MVC4开发指南(黄保翕编著)》笔记

    在刚刚过去的中秋节中,利用了两天的碎片时间把黄保翕编著的<asp.net MVC4 开发指南>看了遍,笔记如下,欢饮在开发MVC的同学一起来探讨: 1.社区 2.开源程序 3.易测试性 4 ...