gpt4 book ai didi

C++ 处理意外错误

转载 作者:太空狗 更新时间:2023-10-29 20:16:05 26 4
gpt4 key购买 nike

我需要为一个研究项目学习 C++ 基础知识,并且我正在试验错误/异常处理。我确实使用了 throw命令成功预测可能发生的事件(如除以零),但我无法弄清楚如何捕获意外异常。以这个示例代码为例:

#include <iostream>
#include <exception>
#include <stdexcept>
using namespace std;

void arrayOutOfBound()
{
int a[3] = {1, 2, 3};

try
{
cout << "This should not display: " << a[5] << endl;
}
catch(runtime_error &e)
/* catch(exception &e) // also does not work */
{
cout << "Error: " << e.what() << endl;
}
}

int main()
{
arrayOutOfBound();
}

我想我必须使用 throw某处陈述,但假设我真的不知道 a[5]行不通(或者用户输入了这个索引,而我没有检查数组大小),那么如何防止程序崩溃? (因为这发生在 Visual C++ Express 2010 调试器中)

注意:如果我愿意 try { int result = a[5]; }首先,在 block 外,并尝试使用 cout << result最后,程序没有编译。编译器试图帮助我,但因此我无法尝试异常处理。

最佳答案

suppose I really did not know that a[5] wouldn't work (or the user entered this index and I did not check for the array size), then how can I prevent the program from crashing?

你根本做不到。对数组的越界访问会导致 C++ 中的未定义行为,它不会抛出异常。当你足够幸运时,你会撞车。

关于C++ 处理意外错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10711662/

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