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
前言 编程时我们往往拿到的是业务流程正确的业务说明文档或规范,但实际开发中却布满荆棘和例外情况,而这些例外中包含业务用例的例外,也包含技术上的例外.对于业务用例的例外我们别无它法,必须要求实施人员与 ...
随机推荐
- Qt 软件的发布
我们程序的Release版本正式发布需要将各种依赖的库文件一起打包. 有时候我们并不清楚具体依赖哪些库,这时,可以用Qt的一个工具"windeployqt" 比如,找到程序.exe ...
- mysql 数据备份及数据迁移
一.使用mysql数据导出进行备份时,会备份整个表的数据,有时候只想备份一部分数据,这个时候可以使用如下方法: 1. 使用insert into 和 select结合: insert into tal ...
- varnish--vcl
●Varnish Configuration Language - VCL(varnish配置语言-VCL) Varnish有一个很棒的配置系统,大部分其他的系统使用配置指令,让您打 ...
- Haskell语言学习笔记(37)RWS, RWST
RWST Monad转换器 RWST Monad转换器是将 ReaderT, WriterT 以及 StateT 这三个Monad转换器的功能集于一体的产物. newtype RWST r w s m ...
- 如何判断int类型相等
int a=10: int b=10: a==b 通过==判断两个int值是否相等. if(a==b){ 相等 }else{ 不相等 }
- Delphi笔记-自定义提示窗口
unit pbHint; interface uses Windows, Controls, Forms, Graphics; type TPBHint=class(THintWindow) //要自 ...
- Tensorflow从文件读取数据
http://blog.csdn.net/zengxyuyu/article/details/53289906
- Fragment 实现拍照,相册选图,设置头像功能
设置不成功,http://bbs.csdn.net/topics/391112964 采纳问题回答:这个是fragment没有收到这个回调,原因不多说了,,,你用你对应的ragment.startAc ...
- pip & Jinja2
[pip&Jinja2] 2.7.9 以及上版本的 python 安装程序会自动安装 pip. 升级:pip install --upgrade pip. 使用pip安装Jinja2:sudo ...
- Android 最火开发框架 xUtils
xUtils简介 xUtils3 api变化较多, 已转至 https://github.com/wyouflf/xUtils3 xUtils 2.x对Android 6.0兼容不是很好, 请尽快升级 ...