You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何忽略IndexOutOfRangeException异常,实现访问越界时跳过报错继续执行?

实现忽略索引越界异常的两种方案

你原有代码的逻辑存在问题:C# 中字符串索引从0开始计数,长度为5的字符串"12345"有效索引范围是0~4,直接访问a[5]会直接触发IndexOutOfRangeException,不会执行你写的==null判断。可以通过以下两种方式实现需求:

  • 方案1:提前做边界校验(优先推荐)
    在访问索引前先判断目标索引是否处于合法范围,无需依赖异常捕获,性能开销极低,适合循环高频执行的场景,示例代码如下:
string a = "12345";
int targetIndex = 5;
// 先校验索引合法性
if (targetIndex >= 0 && targetIndex < a.Length)
{
    char currentVal = a[targetIndex];
    // 索引合法时的业务逻辑
}
else
{
    // 索引越界,直接跳过进入下一轮循环
    continue;
}
  • 方案2:捕获指定类型异常
    如果业务场景无法提前做边界校验,可以用try-catch块包裹可能触发异常的代码,捕获到IndexOutOfRangeException后直接执行跳过逻辑,示例代码如下:
string a = "12345";
try
{
    char currentVal = a[5];
    // 正常业务逻辑
}
catch (IndexOutOfRangeException)
{
    // 捕获到索引越界异常,直接进入下一轮循环
    continue;
}

注意:异常捕获会产生额外的性能开销,高频调用场景下性能远低于提前边界校验,非必要场景不推荐使用。

内容的提问来源于stack exchange,提问作者Maxim Levashov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 09:54:02