// 编写一个C++ 程序,动态分配一个整型数组,并根据用户输入的索引值访问数组元素。 在访问数组元素时处理以下异常情况: 1)如果数组分配内存失败,则抛出一个自定义的异常对象 MemoryAllocationException。 2)如果用户输入的索引超出了数组的范围,则抛出一个自定义的异常对象 IndexOutOfBoundsException。 // 【要求】在 main 函数中调用动态内存分配函数,并捕获并处理可能抛出的异常。 #include using namespace std; // 自定义异常类 class MemoryAllocationException : public exception { public: const char *what() const throw() { return "内存分配异常"; } }; class IndexOutOfBoundsException : public exception { public: const char *what() const throw() { return "索引越界异常"; } }; int main() { int *arr = new int[10]; // 动态分配一个整型数组 try { if (arr == NULL) throw MemoryAllocationException(); // 当不抛出异常时,继续执行数组的赋值操作 arr[0] = 1; arr[1] = 2; arr[2] = 3; arr[3] = 4; // 其余元素会被初始化为 0 int n; cout << "请输入索引值: "; cin >> n; if (n < 0 || n > 9) throw IndexOutOfBoundsException(); // 当不抛出异常时,继续执行数组的访问操作 cout << "arr[" << n << "] = " << arr[n] << endl; } catch (exception &e) { cout << "捕获异常: " << e.what() << endl; } return 0; }