当数组出局时,是否通过异常检查安全?

gsa*_*ras 1 c++ arrays error-handling indexoutofboundsexception c++11

这是我的代码:

template<class T>
void Matrix<T>::set(const int i, const int j, const T v) {
    try {
        m[i][j] = v;
    } catch (std::exception& e) {
        std::cout << "Standard exception: " << e.what() << std::endl;
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,我在这方面安全吗?我的意思是,有可能i和/或j超出界限,但程序收到分段错误,然后抛出异常?

如果这不是一个好方法,那我应该使用assert()吗?

seh*_*ehe 6

只需添加边界检查.

C++不对数组进行边界检查,更不用说抛出异常了.

使用vectors/std :: array,您可以使用该.at()方法而不是[]运算符来进行检查.

最后,GSL引入了array_view允许您添加"零成本注释"的内容,以便分析工具可以进行边界检查.尚未出现GSL事实上的标准实施.也可以看看: