在期望返回Template <t>值的函数中,我应该在错误情况下返回什么?

时间:2015-10-29 11:53:20

标签: c++ templates

我在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;??
}

1 个答案:

答案 0 :(得分:4)

如果没有任何东西可以归还,那么就没有什么可以回归了。

让异常传播,或者通过在此处捕获,或者在cerr语句后使用throw语句重新抛出异常:

catch (out_of_range &e)
{
    cerr << "Error, " << e.what() << endl
         << "Position: " << _Position
         << " Elements: " << _Elements << endl;
    throw;
}

您的下一个问题是如何处理调用范围中的异常。 :)
但至少你不必再担心返回值了。