try {
int i = 0;
int j = 0/i; /* Division by 0 */
int *k = 0;
std::cout << *k << std::endl; /* De-reference invalid memory location. */
}
catch (...) {
std::cout << "Opps!" << std::endl;
}
无法检测到上述运行时错误。或者,我对 C++ 异常处理功能的期望有误吗?
最佳答案
如果你取消引用一个不指向对象的指针,你不会得到异常,你会得到未定义的行为。任何事情都有可能发生。
通常,如果您取消引用一个空指针,就像您在示例中所做的那样,程序将会崩溃。
关于c++ - 如何在 C++ 中捕获运行时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2582282/