kotlin中`try-catch` 块与 `if` 语句处理异常

使用 try-catch 块来处理 ArrayIndexOutOfBoundsException 异常可能不是最佳实践,因为异常处理通常比条件检查要慢。

 for (idx in move.indices step 2) {
            try {
                x = p.first + move[idx]
                y = p.second + move[idx + 1]
                pointNearby = markedImageMatrix[x][y]
                if (pointNearby.mark == itm.key) {
                    bounds[itm.key]?.add(Point(x, y))
                }
            } catch (e: ArrayIndexOutOfBoundsException) {
                continue
            }
        }
    }

使用 if 语句来检查数组边界通常更为高效,因为它避免了异常的生成和处理过程。使用 if 语句进行边界检查的改进版本:

for (idx in move.indices step 2) {
    x = p.first + move[idx]
    y = p.second + move[idx + 1]
    if (x >= 0 && x < markedImageMatrix.size && y >= 0 && y < markedImageMatrix[x].size) {
        pointNearby = markedImageMatrix[x][y]
        if (pointNearby.mark == itm.key) {
            bounds[itm.key]?.add(Point(x, y))
        }
    }
}

这种方法首先检查 xy 是否在有效的数组索引范围内,只有在索引有效的情况下才尝试访问数组元素。这样可以避免抛出和捕获异常,从而提高代码的效率。同时,这种方法的代码可读性也更好,更容易维护和理解。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/752454.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何判断一个Repo是否是Private还是Internal?

Github的Repository分为三种类型&#xff0c;主要是用于决定谁可以访问、查看和克隆该仓库。GitHub 提供了几种不同的可见性选项&#xff0c;包括 Private、Public 和 Internal。 Private 只有仓库的拥有者和被明确邀请为协作者&#xff08;Collaborator&#xff09;的用户才能…

VMware虚拟机移植保姆级教程

文章目录 前言:一、打包与备份二、VMware移植1. 文件介绍2. 移植过程总结:前言: 前几日对电脑做了一个大的更新升级,不仅将硬件进行了升级,还对电脑的软件进行了升级也就是我从Win10今家庭版升级到Win11专业版啦,之前没有升级是因为数据量很多,怕升级后找不到自己需要的…

Windows和Linux C++判断磁盘空间是否充足

基本是由百度Ai写代码生成的&#xff0c;记录一下。实现此功能需要调用系统的API函数。 对于Windows&#xff0c;可调用函数GetDiskFreeSpaceEx&#xff0c;使用该函数需要包含头文件windows.h。该函数的原型&#xff1a; 它的四个参数&#xff1a; lpDirectoryName&#xff0…

基于SpringBoot养老院管理系统设计和实现(源码+LW+调试文档+讲解等)

&#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者&#xff0c;博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f31f;文末获取源码数据库&#x1f31f;感兴趣的可以先收藏起来&#xff0c;还…

基于改进天鹰优化算法(IAO)优化RBF神经网络数据回归预测 (IAO-RBF)的数据回归预测(多输入多输出)

改进天鹰优化算法(IAO)见&#xff1a;【智能优化算法】改进的AO算法(IAO)-CSDN博客 代码原理 基于改进天鹰优化算法&#xff08;IAO&#xff09;优化RBF神经网络数据回归预测&#xff08;IAO-RBF&#xff09;的多输入多输出&#xff08;MIMO&#xff09;数据回归预测&#xf…

CVPR24已开源:刷新监督学习SOTA,无监督多目标跟踪时代来临!

论文标题&#xff1a; Matching Anything by Segmenting Anything 论文作者&#xff1a; Siyuan Li, Lei Ke, Martin Danelljan, Luigi Piccinelli, Mattia Segu, Luc Van Gool, Fisher Yu 导读&#xff1a; 在计算机视觉的征途中&#xff0c;多目标跟踪&#xff08;MOT&…

Centos安装redis(附:图形化管理工具)

第一步&#xff1a;下载redis wget http://download.redis.io/releases/redis-6.2.7.tar.gz 第二步&#xff1a;解压 tar zxvf redis-6.2.7.tar.gz 第三步&#xff1a;安装依赖环境 yum -y install gcc-c第四步&#xff1a;安装依赖环境 make install第五步&#xff1a;修…

开源项目-商城管理系统

哈喽&#xff0c;大家好&#xff0c;今天主要给大家带来一个开源项目-商城管理系统 商城管理系统分前后端两部分。前端主要有商品展示&#xff0c;我的订单&#xff0c;个人中心等内容&#xff1b;后端的主要功能包括产品管理&#xff0c;门店管理&#xff0c;会员管理&#x…

C++之STL(十)

1、适配器 2、函数适配器 #include <iostream> using namespace std;#include <algorithm> #include <vector> #include <functional>bool isOdd(int n) {return n % 2 1; } int main() {int a[] {1, 2, 3, 4, 5};vector <int> v(a, a 5);cou…

外贸人该怎么进行客户分类,怎么找出那20%的重要客户?

更多外贸干货及开发见客户的方法&#xff0c;尽在微信【千千外贸干货】 我们往往只是知道这个规则&#xff0c;却不懂怎么去进行客户分类&#xff0c;怎么找出这20%的重要客户&#xff1f; 具体而言&#xff0c;有8个指标来衡量&#xff1a; 1 利润率高 不以盈利为目的的企业…

使用python基于经纬度获取高德地图定位地址【逆地址解析】

一、高德地图api申请 1. 高德开放平台注册&#xff0c;登录 进入网址&#xff1a;高德开放平台 | 高德地图API 注册 -- 支付宝扫码认证 -- 完善个人信息 -- 登录 2. 申请API &#xff08;1&#xff09;点击头像 -- 应用管理 -- 我的应用 -- 创建新应用 &#xff08;2&…

对于恒指你了解够多吗?

不少人进入股市选择投资哪种哪种期货&#xff0c;都是因为听别人说利润大&#xff0c;于是也不管三七二十一&#xff0c;就盲目的跟着投资了&#xff0c;认为所有的期货都应该应用一样的操作办法&#xff0c;随机应变就是了&#xff0c;其实不然&#xff0c;每种期货都有着自己…

springboot3.x的优势在哪里,我们是否要选择springboot3.x

Spring Boot 3.x的优势主要体现在以下几个方面&#xff0c;这些优势使得它成为了一个值得考虑的选择&#xff1a; Java 17支持&#xff1a;Spring Boot 3.x 支持 Java 17&#xff0c;这是一个长期支持&#xff08;LTS&#xff09;版本&#xff0c;带来了许多新特性和性能改进。…

从ChatGPT代码执行逃逸到LLMs应用安全思考

摘要 11月7日OpenAI发布会后&#xff0c;GPT-4的最新更新为用户带来了更加便捷的功能&#xff0c;包括Python代码解释器、网络内容浏览和图像生成能力。这些创新不仅开辟了人工智能应用的新境界&#xff0c;也展示了GPT-4在处理复杂任务方面的惊人能力。然而&#xff0c;与所有…

亚马逊云科技快速上手训练营:模块一

课程目标 初步了解云平台与本地环境的差异初步了解亚马逊云科技平台的基础设施和部分核心服务初步了解亚马逊云科技平台上的弹性高可用架构初步了解亚马逊云科技平台上的架构设计准则初步了解本地架构迁移上云的基本知识 1.亚马逊云科技平台简介 1.1 什么是云计算&#xff1…

倒装COB封装技术与常规SMD封装技术差异对比

倒装COB显示屏与常规SMD LED显示屏一个很大的差异点就是在于封装工艺的不同&#xff0c;COB&#xff08;Chip on Board&#xff09;封装和SMD&#xff08;Surface Mounted Device&#xff09;封装是LED显示屏领域中两种常见的技术&#xff0c;所表现出来的差异主要在于封装结构…

Vue3学习笔记<->nginx部署vue项目

安装nginx vue项目通常部署到nginx上&#xff0c;所以先安装一个nginx。为了方便安装的是windows版nginx&#xff0c;解压就能用。 项目参考上一篇文章《Vue3学习笔记&#xff1c;-&#xff1e;创建第一个vue项目》《Vue3学习笔记&#xff1c;-&#xff1e;创建第一个vue项目》…

力扣随机一题 6/28 数组/矩阵

&#x1f4dd;个人主页&#x1f339;&#xff1a;誓则盟约⏩收录专栏⏪&#xff1a;IT 竞赛&#x1f921;往期回顾&#x1f921;&#xff1a;6/27 每日一题关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d…

最新AI智能聊天对话问答系统源码(图文搭建部署教程)+AI绘画,文生图,TTS语音识别输入,文档分析

一、人工智能语言模型和AI绘画在多个领域广泛应用 人工智能语言模型和AI绘画在多个领域都有广泛的应用。以下是一些它们的主要用处&#xff1a; 人工智能语言模型 内容生成 写作辅助&#xff1a;帮助撰写文章、博客、报告、剧本等。 代码生成&#xff1a;自动生成或补全代码&…

Arduino - Keypad 键盘

Arduino - Keypad Arduino - Keypad The keypad is widely used in many devices such as door lock, ATM, calculator… 键盘广泛应用于门锁、ATM、计算器等多种设备中。 In this tutorial, we will learn: 在本教程中&#xff0c;我们将学习&#xff1a; How to use key…