首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Java 异常编写小技巧

Java 异常编写小技巧

作者头像
猿芯
发布于 2021-08-24 06:44:30
发布于 2021-08-24 06:44:30
1K00
代码可运行
举报
运行总次数:0
代码可运行

1 多个异常块 catch 写法

参考 Nacosnacos-config 子项的 BaseDatabaseOperate 类。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
default Boolean update(TransactionTemplate transactionTemplate, JdbcTemplate jdbcTemplate,List<ModifyRequest> contexts, BiConsumer<Boolean, Throwable> consumer)

try {   
    return Boolean.TRUE;
} catch (BadSqlGrammarException | DataIntegrityViolationException e) {
    FATAL_LOG.error("[db-error] sql : {}, args : {}, error : {}", errSql[0], args[0], e.toString());
    return Boolean.FALSE;
}

当我们有多个异常需要相同异常处理时,可以采用 catch(XxxException | XxxExcetion) 方式处理,代码看起来也非常简洁和优雅。

2 资源关闭 try-with-resource

Jdk 1.7之后有了 try-with-resource 处理机制。

本地代码参考 Nacos 批量上传配置文件接口,关闭资源写法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  try (DiskUtils.LineIterator iterator = DiskUtils.lineIterator(file)) {
    int batchSize = 1000;
    List<String> batchUpdate = new ArrayList<>(batchSize);
    List<CompletableFuture<Void>> futures = new ArrayList<>();
    List<Boolean> results = new CopyOnWriteArrayList<>();
    while (iterator.hasNext()) {
        String sql = iterator.next();
        if (StringUtils.isNotBlank(sql)) {
            batchUpdate.add(sql);
        }
        if (batchUpdate.size() == batchSize || !iterator.hasNext()) {
            List<ModifyRequest> sqls = batchUpdate.stream().map(s -> {
                ModifyRequest request = new ModifyRequest();
                request.setSql(s);
                return request;
            }).collect(Collectors.toList());
            futures.add(CompletableFuture.runAsync(() -> results.add(doDataImport(jdbcTemplate, sqls))));
            batchUpdate.clear();
        }
    }
    CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])).join();
    return RestResult.<String>builder()
            .withCode(BooleanUtils.and(results.toArray(new Boolean[0])) ? 200 : 500).withData("").build();
} catch (Throwable ex) {
    LogUtil.DEFAULT_LOG.error("An exception occurred when external data was imported into Derby : {}", ex);
    return RestResultUtils.failed(ex.getMessage());
}

示例代码 try (DiskUtils.LineIterator iterator = DiskUtils.lineIterator(file)) 包含文件流读取,所以符合 try-with-resource,不需要开发者手动关闭文件流资源。

往期推荐

  1. 肝九千字长文 | MyBatis-Plus 码之重器 lambda 表达式使用指南,开发效率瞬间提升80%
  2. 用 MHA 做 MySQL 读写分离,频繁爆发线上生产事故后,泪奔分享 Druid 连接池参数优化实战
  3. 微服务架构下,解决数据库跨库查询的一些思路
  4. 一文读懂阿里大中台、小前台战略

< END >

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-08-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 架构荟萃 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Java版 数字金额大写转换--Java学习网
需求:读入一个浮点数值,将其转化为中文金额的大写形式。如123.45,转化为:壹佰贰拾叁元肆角伍分。以下是各种情况要完善:
用户1289394
2021/01/20
1.4K0
Java版 数字金额大写转换--Java学习网
Vue 过滤器(filters)的使用、封装、批量全局定义及常用实例分享
可以用在 双花括号插值和 v-bind 表达式,其中 v-bind 从 2.1.0+ 开始支持。
德顺
2021/05/17
3.5K0
人民币数字转大写
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
我乃小神神
2019/11/13
1.4K0
编写自己的代码库(javascript常用实例的实现与封装)
因为公司最近项目比较忙,没那么多空余的事件写文章了,所以这篇文章晚了几天发布。但是这也没什么关系,不过该来的,总是会来的。 好了,其他的不多说的,大家在开发的时候应该知道,有很多常见的实例操作。比如数组去重,关键词高亮,打乱数组等。这些操作,代码一般不会很多,实现的逻辑也不会很难,下面的代码,我解释就不解释太多了,打上注释,相信大家就会懂了。但是,用的地方会比较,如果项目有哪个地方需要用,如果重复写的话,就是代码沉余,开发效率也不用,复用基本就是复制粘贴!这样是一个很不好的习惯,大家可以考虑一下把一些常见的操作封装成函数,调用的时候,直接调用就好! 源码都放在github上了,大家想以后以后有什么修改或者增加的,欢迎大家来star一下ec-do。
守候i
2018/08/22
1.5K0
编写自己的代码库(javascript常用实例的实现与封装)
C#数字转换成大写人民币金额
C#数字转换成大写人民币金额 如200转换成贰佰元 // 数字转换成大写金额 // 例如:(new Money(200)).ToString() == "贰佰元" namespace Skyiv.Util { using System.Text; class Test { static void Main() { for (;;) { System.Console.Write("金额: "); string s = Sys
用户7705674
2021/11/02
1.3K0
C# 金额转中文大写
创建的项目是创建一个 dot net core 的项目,实际上这个项目可以创建为 Stand 的。
林德熙
2018/09/18
2.6K0
金额大写转小写SQL
Create Or Replace Function Money2Chinese(Money In Number) Return Varchar2 Is strYuan Varchar2(150); strYuanFen Varchar2(152); numLenYuan Number; numLenYuanFen Number; strRstYuan Varchar2(600); strRstFen Varchar2(200); strRst Varch
用户7108768
2021/09/23
1.9K0
如何把2274587.84如何快速的转换为大写:贰佰贰拾柒万肆仟伍佰捌拾柒元捌角肆分?(番外篇)
前几天在Python黄金群【莫生气】问了一个Python数据处理的问题,需求如下:
前端皮皮
2023/08/17
1640
如何把2274587.84如何快速的转换为大写:贰佰贰拾柒万肆仟伍佰捌拾柒元捌角肆分?(番外篇)
java开发_数字转换汉语中人民币的大写_完整版
======================================================
Hongten
2018/09/13
1.7K0
java开发_数字转换汉语中人民币的大写_完整版
js数字金额转换为大写金额
//数字转换中文大写 function toChinese(n) { if (n === 0) return "零"; if (!/^(0|[1-9]\d*)(\.\d
小语雀网
2021/09/08
5.7K0
【总结】56个JavaScript 实用工具函数助你提升开发效率!
https://juejin.cn/post/7019090370814279693
pingan8787
2021/11/08
1.1K0
【总结】56个JavaScript 实用工具函数助你提升开发效率!
Js实用函数合集
var b = new Date(); //获取当前时间 b.getTime() //获取时间戳 b.getFullYear() //获取年份 b.getMonth()+1; //获取月份 b.getDate() //获取天 b.getHours() //获取小时 b.getMinutes() //获取分钟 b.getSeconds() //获取秒数 b.getDay() //获取星期几 b.getMilliseconds() //获取毫秒
全栈程序员站长
2022/09/18
1.6K0
Js实用函数合集
金额转大写
在处理财务账款时,需要将转账金额写成大写的。也就是说,如果要转账123456.00元,则需要写成“壹拾贰万叁仟肆佰伍拾陆元整”。 所以常常需要通过程序控制自动进行转换。本实例实现了小写金额到大写金额的转换。
崔笑颜
2020/06/08
2.4K0
create common utils.js
/* * author:w候人兮猗(ahwgs) * url:https://www.ahwgs.cn * github:https://github.com/ahwgs/common-utils/blob/master/utils * */ /** * 是否是数组 * @param value * @returns {boolean} */ export const isArray = (value) => { return toString.call(value) === '[obje
w候人兮猗
2020/07/01
1.1K0
php把字符串转换为大写_金额大小写顺序
php金额大小写转换的方法:使用金额转换函数grees,代码为【grees=array(“拾”,”佰”,”仟”,”万”,”拾”,”佰”,”仟”,”亿”);list(ns1,ns2)=explode(“.”,ns,2)】。
全栈程序员站长
2022/11/08
3.2K0
php把字符串转换为大写_金额大小写顺序
[算法题] 人民币大小写转换(阿拉伯数字和汉字转换)
本文讲述了一位技术编辑人员,在处理社区技术文章时,所经历的一些思考和总结。通过具体的工作实践,作者从提高文章阅读体验、严谨对待文章内容审核、善用工具提高工作效率等方面,进行了总结和分享。
静默虚空
2018/01/05
1.5K0
[算法题]  人民币大小写转换(阿拉伯数字和汉字转换)
人民币大写金额转换C#方法
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/120779.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/15
8070
BiugleJS
老猫-Leo
2023/12/11
2010
把数字转换成人民币大写的形式Java类
/** @author sunpander 把输入的数字转换成人民币大写的形式 */ import java.io.BufferedReader; import java.io.InputStreamReader; public class ChangeNumToRMB { String moneyStrs[] = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" }; public static void main(String[] arg
用户7999227
2021/09/19
4990
javascript实现数字转大写金额的函数
<SCRIPT type="text/javascript" Charset="GB2312"> function convertCurrency(currencyDigits) { // Constants: var MAXIMUM_NUMBER = 99999999999.99; // Predefine the radix characters and currency symbols for output: var CN_ZERO = "零"; var CN_ONE = "壹"; va
菩提树下的杨过
2018/01/22
1.8K0
推荐阅读
相关推荐
Java版 数字金额大写转换--Java学习网
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验