我在OOP中已经很高尚,并且是我第一次处理异常和模板,可能是我以错误的方式计划了这个功能...... 但是我想知道在这种情况下我应该返回什么,如果执行出错并抛出异常......在返回模板的函数中返回什么样的数据错误? 对不起,如果我不够清楚,英语不是我的母语......
template<typename T>
const T& List<T>::Next()
{
try
{
if (_actual->getNext() == NULL)
throw out_of_range("No next elements, list out of bounds");
else
{
_actual = _actual->getNext();
_Position++;
return _actual->getData();
}
}
catch (out_of_range &e)
{
cerr << "Error, " << e.what() << endl << "Position: " << _Position << " Elements: " << _Elements << endl;
}
// <--- what should I return here?? return NULL;? return 0;? return <T> thrash;??
}
答案 0 :(得分:4)
如果没有任何东西可以归还,那么就没有什么可以回归了。
让异常传播,或者通过在此处捕获,或者在cerr
语句后使用throw
语句重新抛出异常:
catch (out_of_range &e)
{
cerr << "Error, " << e.what() << endl
<< "Position: " << _Position
<< " Elements: " << _Elements << endl;
throw;
}
您的下一个问题是如何处理调用范围中的异常。 :)
但至少你不必再担心返回值了。