try-catch+thows异常范围说明
方式一:
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异常范围说明的更多相关文章
- 异常处理的捕捉:try{}catch(异常类 变量)finally{最终执行}
可以对异常进行针对性处理的方式.try{ //需要被检查的异常 }catch(异常类 变量)//该变量用于接收发生的异常{ //处理异常的代码 }finally{ //一定会被执行的代码. }
- “全栈2019”Java异常第十二章:catch与异常匹配
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java异 ...
- C++异常处理解析: 异常的引发(throw), 捕获(try catch)、异常安全
前言: C++的异常处理机制是用于将运行时错误检测和错误处理功能分离的一 种机制(符合高内聚低耦合的软件工程设计要求), 这里主要总结一下C++异常处理的基础知识, 包括基本的如何引发异常(使用th ...
- 为什么catch了异常,但事务还是回滚了?
前几天我发了这篇文章<我来出个题:这个事务会不会回滚?>得到了很多不错的反馈,也有不少读者通过微信.群或者邮件的方式,给了我一些关于test4的回复.其中还有直接发给我测试案例,来证明我的 ...
- 在 SQL Server 中使用 Try Catch 处理异常
如何在 SQL Server 中使用 Try Catch 处理错误? 从 SQL Server 2005 开始,我们在TRY 和 CATCH块的帮助下提供了结构错误处理机制.使用TRY-CATCH的语 ...
- C#程序如何捕捉未try/catch的异常——不弹“XXX已停止工作”报错框
诚意满满直接上代码: static void Main(string[] args) { //Main函数中增加此句 AppDomain.CurrentDomain.UnhandledExceptio ...
- SQL Server 中使用 Try Catch 处理异常
CREATE TABLE ErrorLog( errNum INT, ErrSev ), ErrState INT, ErrProc ), ErrLine INT, ErrMsg ) ) CREATE ...
- 前端魔法堂——异常不仅仅是try/catch
前言 编程时我们往往拿到的是业务流程正确的业务说明文档或规范,但实际开发中却布满荆棘和例外情况,而这些例外中包含业务用例的例外,也包含技术上的例外.对于业务用例的例外我们别无它法,必须要求实施人员与 ...
- (后端)异常不仅仅是try/catch
前言 编程时我们往往拿到的是业务流程正确的业务说明文档或规范,但实际开发中却布满荆棘和例外情况,而这些例外中包含业务用例的例外,也包含技术上的例外.对于业务用例的例外我们别无它法,必须要求实施人员与 ...
随机推荐
- JPQL和SQL的比较
前言 在JAVA EE中,JPQL是专门为Java 应用程序访问和导航实体实例设计的.Java Presistence Query Language(JPQL),java持久性查询语言.它是JPA规范 ...
- DC组策略相关
恢复DC组策略默认配置 DcGPOFix [/ignoreschema] [/Target: Domain | DC | BOTH] dcgpofix /? gpupdate刷新 gpedit.msc ...
- How to Pronounce OF
How to Pronounce OF Tagged With: OF Reduction Study the OF reduction. There are many reductions in ...
- 迷你MVVM框架 avalonjs 学习教程10、样式操作
一般情况下我们通过设置类名就可以改变元素的样式,但涉及到动画部分,就一定需要设置内联样式了,因此有了ms-css.*ms-css*的用法为ms-css-样式名="样式值", 如ms ...
- urllib 和urllib2 模块使用简例
一.最简单的使用 import urllib,urllib2 response = urllib2.urlopen("https://www.baidu.com") print r ...
- chnagyong sql
select gid,count(distinct mid) from members group by gid mysql> SELECT IFNULL(NULL,); mysql> 1 ...
- sam/bam格式
1)Sam (Sequence Alignment/Map) ------------------------------------------------- 1) SAM 文件产生背景 随着Ill ...
- 兼容主流浏览器的css渐变色
网页中的渐变色区域,渐变色背景,一般都是通过ps图片方法来实现,但是图片放得多了会影响网页的打开速度,本文介绍的就是用纯 CSS 实现 IE .Firefox.Chrome 和 和Safari都支持的 ...
- jsp页面遍历List<Array>与Map
数据结构下如图所示,之前的前辈遍历方法如下,代码直接抛异常哈, <c:if test="${!empty data1}"> <c:forEach items=&q ...
- jquery之DataTables的使用
jquery之DataTables的使用 document jquery function lsquo 强大的表格解决方案,有多强大,一起来看下吧: 1.DataTables的默认配置 $(do ...