异常或错误处理——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 }
-
以返回错误码的方式来指示错误(更加合理和常用)