gpt4 book ai didi

c++ - 抛出 std::out_of_range 异常 C++

转载 作者:搜寻专家 更新时间:2023-10-31 01:43:23 25 4
gpt4 key购买 nike

我有下面的代码:

template <typename X>
const X& ArrayList<X>::at(unsigned int index) const
{
try {
return data[index]; //return the value of the index from the array
}
catch (std::out_of_range outofrange) { //if the index is out of range
std::cout << "OUT OF RANGE" << outofrange.what(); //throw this exception
}
}

所以如果我有一个包含值的数组

a = [1,2,3]
a.at(5);

应该抛出异常“超出范围”,但它吐出值 0。我不确定发生了什么。

最佳答案

我的猜测是,如果索引超出范围,data[index] 不会抛出异常,因为 data 的类型不支持它。 数据的类型是什么?是像X data[N]这样的数组吗?

如果是这样,那么自己检查一下:

template <typename X>
const X& ArrayList<X>::at(unsigned int index) const
{
if ( index >= _size )
throw std::out_of_range("ArrayList<X>::at() : index is out of range");
return data[index];
}

请注意,_size 假定为所谓的容器 data 的大小。

希望对您有所帮助。

关于c++ - 抛出 std::out_of_range 异常 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25236168/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com