异常或错误处理——C++11(七)

  • 异常抛出并捕获(尽量少用)

//类的声明
class Vector {
public:
    Vector(int s);
    double& operator[](int i);
    int size();
private:
    double* elem;
    int sz;
}

//类的定义
Vector::Vector(int s):elem{new double[s]}, sz{s} {}
double& Vector::operator[](int i) {return elem[i]; }
int Vector::size() {return sz;}
//判断是否越界,并抛出异常
double& Vector::operator[](int i)
{
    if (i < 0 || size() <= i)
    {
        throw out_of_range("out of range");
    }
    return elem[i];
}

//捕获异常
void f(Vector& v)
{
    try {
        v[v.size()] = 7;
    }
    catch (out_of_range& err) {
        cout<<err.what()<<endl;
    }
}
  • 声明不会抛出异常的函数

当此种函数仍抛出异常时,则会调用std::terminate来立即终止程序。

void user(int sz) noexcept
{
    //do something
}
  • 以返回错误码的方式来指示错误(更加合理和常用)

猜你喜欢

转载自www.cnblogs.com/share-ideas/p/11886782.html