c++ - 捕获队列溢出异常时发生
问题描述
void IntQueue::enqueue(int num)
{
if (isFull())
throw std::runtime_error("The queue is full");
else
{
// Calculate the new rear position
rear = (rear + 1) % queueSize;
// Insert new item
queueArray[rear] = num;
// Update item count
numItems++;
}
}
在我抛出这个异常之后,我该如何重写主程序,以便在溢出异常发生时捕获它们。队列溢出的异常处理程序应打印适当的错误消息,然后终止程序。这是主程序
int main()
{
IntQueue iQueue(5);
cout << "Enqueuing 5 items...\n";
// Enqueue 5 items.
for (int x = 0; x < 5; x++)
iQueue.enqueue(x);
// Attempt to enqueue a 6th item.
cout << "Now attempting to enqueue again...\n";
iQueue.enqueue(5);
// Deqeue and retrieve all items in the queue
cout << "The values in the queue were:\n";
while (!iQueue.isEmpty())
{
int value;
iQueue.dequeue(value);
cout << value << endl;
}
}
解决方案
用 包裹可以扔的部分try-block
。
例如,
try
{
for (int x = 0; x < 5; x++)
iQueue.enqueue(x);
// Attempt to enqueue a 6th item.
cout << "Now attempting to enqueue again...\n";
iQueue.enqueue(5);
}
catch (const std::runtime_error& e)
{
cout << "Error: " << e.what() << endl; // Print error message
exit(1); // Terminate with non-zero exit code
}
推荐阅读
- angular - Firestore 获取 Javascript 日期而不是时间戳
- angularjs - 无法使用 get post angular 从服务器加载 json 文件
- c++ - 函数模板的“生成器”
- android - 知道为什么我发布的 Android 应用在打开时会立即关闭吗?
- math - 在 AT&T 汇编中计算指数
- angular - Angular Bootstrap Typeahead 服务问题
- python - + 不支持的操作数类型:while 循环中的 int 和 str
- android - 在 Android 中将图像大小调整为位图
- python - 如何将列表中的值分配给字典并返回到单独的列表中?
- c++ - Linux 蓝牙 API 函数位置