浅谈try-catch写在循环里面好还是外面好

2024-01-03 09:31:51

try-catch到底写在循环里面好,还是外面好?很多人会说当然写在循环外面好,也有一部分人说写在循环里面好,其实这两种回答都不完全对,我们来分析下两者的弊端。

try-catch写在循环外面的弊端:

try {
	for (...){
		// 处理逻辑
	}
} catch(Exception e) {
	...
}

如果try-catch写在循环外面,一条数据处理异常,循环结束,会导致整个任务的结束,严重影响系统效率。

try-catch写在循环里面的弊端:

for (...){
	try {
    	// 处理逻辑
    } catch(Exception e) {
        ...
    }
}

如果try-catch写在循环里面,会造成过多的、没有必要的循环异常处理,会严重影响系统效率。

应用场景

try-catch适合写在循环外面的场景:

  1. 一条数据处理异常,需要停止后面的数据处理;

  2. 不能接受任意数据处理异常,如在事务方法中,需要整体成功或者失败,这时一条数据处理异常,就需要停止循环后面的数据处理,同时需要回滚循环中所有已处理过的数据;

try-catch适合写在循环里面的场景:

  1. 一条数据处理异常,不能影响其他数据的处理;

  2. 能接受少部分的数据处理异常,而不影响整体数据处理;

如果是连接超时异常类,如果要写在循环里面,可以设置在超过N条连接超时后强制退出循环,一方面排除了网络波动,服务可能真的出现故障,这时可以避免过多没有必要的请求超时,待服务恢复后再重试;

总结

目前没有规范说一定要写在哪里比较好,try-catch写在循环里面或者外面都可以,上面分析了两者的弊端和应用场景,我们也可以根据实际业务场景作出选择。

文章来源:https://blog.csdn.net/qq_37726813/article/details/135351111
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。