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

为何仅在值非空时打印仍触发RangeError?附代码及报错

问题解析与解决方案

你遇到的问题根源在于:Dart中直接访问列表超出范围的索引时,不会返回null,而是直接抛出RangeError,所以??运算符根本没机会触发——代码在执行到nums[10]时就已经报错中断了。

两种可行的解决方法:

方法1:先判断索引有效性

手动检查索引是否在列表的合法范围内(0 <= index < nums.length),再决定访问哪个元素:

List nums = [1, 2, 3];
int targetIndex = 10;
print(targetIndex >= 0 && targetIndex < nums.length ? nums[targetIndex] : nums[0]);

方法2:使用elementAtOrNull方法(推荐)

Dart 2.13及以上版本提供了elementAtOrNull方法,当索引越界时会返回null,这样就能正常配合??运算符使用:

List nums = [1, 2, 3];
print(nums.elementAtOrNull(10) ?? nums[0]);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 11:15:35