【发布时间】:2016-01-15 19:26:08
【问题描述】:
这是我的代码:
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;
}
}
但是,我在这里是安全的吗?我的意思是,i 和/或j 可能越界,但程序收到分段错误,然后会抛出异常吗?
如果这不是一个好方法,那么我应该使用assert() 吗?
【问题讨论】:
-
“否”对所有问题。 “这取决于”最后一个。
-
@juanchopanza 这不是问题......!
-
我可以重新打开问题,没问题。副本来自“相关”链接,这意味着不难找到。不要太担心单次否决票,可能有各种各样的原因。
-
@gsamaras 别担心它有时会发生。数组不会引发异常。 C++ 中的错误处理是一个复杂的固执己见的话题(因为从嵌入式到大型机的 C++ 应用程序非常不同)。我建议你看看famous book list,特别是Bjarne's book的第II.13章,这样你就可以找到你自己的真相。
-
Sutter, Alexandrescu -- Coding Standards 是另一个关于 C++ 错误处理的好讨论。
标签: c++ arrays c++11 error-handling indexoutofboundsexception