我正在建立一个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;
答案 0 :(得分:1)
您正在使用GetType()
投掷指针。这与期望按值的对象的catch子句不匹配。
只需删除throw new
即可。 (并且可选择通过const-reference捕获)。