【发布时间】:2015-04-16 11:42:44
【问题描述】:
我知道这可能看起来像重复,但其他问题没有我正在寻找的答案。
template <class T>
T Queue<T>::pop_back()
{
try
{
if (empty())
throw "The Queue is empty!";
size--;
back= (back- 1 + max_size) % (max_size);
return queue[back];
}
catch (char* strException)
{
cerr << "Error: " << strException << endl;
}
}
我有上述pop_back函数的实现。每次删除元素时,它都必须返回该元素。然而,每次它试图从一个空队列中弹出一些东西时,它都会说“在抛出一个'char const *'的实例后调用终止 中止(核心转储)”
有哪些提示和建议可以解决此问题?我在那里有一个 try catch 块,但它没有多大帮助。函数必须从调用它的地方返回一些东西,或者停止并返回到 main。
我正在寻找一种设计模式,以便在遇到此类问题时可以使用它。 基本上当我需要退货但没有什么可以退货的时候该怎么办?
谢谢。
【问题讨论】:
-
如果您对异常很认真,请创建一些类而不是抛出指向字符串文字的指针。如果您不处理异常,甚至不必费心去捕捉它。
-
为此抛出异常是非常值得怀疑的。真的很特别吗?你可以在 if 语句中做“错误:”消息的事情,不要增加不必要的开销。考虑在容器中没有剩余元素的情况下返回空指针。
标签: c++ exception exception-handling return