c++ - 在 Arraydeque 中制造异常不会停止执行

标签 c++ exception arraydeque

<分区>

我正在构建一个双端队列,我只是在发生异常时向用户发送消息。因此,我使用异常尝试从空列表中删除:

ArrayDequeClass:

 void ArrayDeque::deleteFront(){
  //Just check if list it's empty. If it is, it throw the exception.
  if(isEmpty())throw new logic_error("You can't delete from an empty 
  list");
  data.erase(data.begin()+front);

}

调用主函数:

try{
  deque->deleteFront();
}catch(logic_error e){
   cout<<e.what();
}

输出是:抛出“std::logic_error*”的实例后调用终止

当我尝试从我的空数组中删除时。我包含了 stdexcept。

我如何才能返回消息:“你不能从空的中删除 列表”

最佳答案

您正在使用throw new 抛出一个指针。这与按值期望对象的 catch 子句不匹配。

只需删除新的。 (并且可以选择通过 const-reference 捕获)。

关于c++ - 在 Arraydeque 中制造异常不会停止执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49318705/

相关文章:

c++ - 如何复制txt文件中的字符串?

java - 应为 BEGIN_OBJECT 但实际为 BEGIN_ARRAY

java - 在 Java 中添加到 ArrayDeque 的前面

java - ArrayDeque 比堆栈快多少?

c++ - 如何从一个文件中读取数据并将其导入到另一个文件中?

c++ - std::map 实现在 linux 和 windows 之间不同

c++ - 获取 Audio Session 的音量级别

C#:分析 "unsafe"方法调用

c++ - 捕获变量声明的异常

java - 访问 ArrayDeque 中的每个元素