55 lines
1.6 KiB
C++
55 lines
1.6 KiB
C++
// 编写一个C++ 程序,动态分配一个整型数组,并根据用户输入的索引值访问数组元素。 在访问数组元素时处理以下异常情况: 1)如果数组分配内存失败,则抛出一个自定义的异常对象 MemoryAllocationException。 2)如果用户输入的索引超出了数组的范围,则抛出一个自定义的异常对象 IndexOutOfBoundsException。
|
||
// 【要求】在 main 函数中调用动态内存分配函数,并捕获并处理可能抛出的异常。
|
||
#include <bits/stdc++.h>
|
||
|
||
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;
|
||
}
|