在Arraydeque中制作例外不会停止执行

时间:2018-03-16 10:38:59

标签: c++ exception-handling arraydeque

我正在建立一个Deque,我只是在发生异常时向用户发送消息。所以,我尝试从空列表中删除时使用异常:

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);

}

在main上调用该函数:

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

输出是:在抛出&#39; std :: logic_error *&#39;

的实例后调用终止

当我尝试从空数组中删除时。我加入了stdexcept。

我如何才能返回消息:&#34;您无法从空中删除   列表&#34;

1 个答案:

答案 0 :(得分:1)

您正在使用GetType()投掷指针。这与期望按值的对象的catch子句不匹配。

只需删除throw new即可。 (并且可选择通过const-reference捕获)。