C++第15课 异常处理
1.C++异常处理机制
int division(int a,int b) { if (b == 0) { throw 0; } return a / b; } void print(int a, int b) { try { division(a, b); } catch (int) { //根据抛出的类型决定如何处理 cout << "除数不能为0" << endl; } catch (string) { //每次只执行一个catch } } //当函数中不存在异常,用noexcept表示该函数不会有异常 int Max(int a, int b) noexcept { return a > b ? a : b; } //异常传参 int top(int* array,int size) { if (size == 0) { throw string("栈为空!"); } return array[size - 1]; } void printTop() { try { int stack[] = { 1,2,4,3,5,87,9 }; int size = 0; top(stack, size); } catch (string str) { cout << str << endl; } catch (...) { //捕获所有异常 } }
2.标准库的异常类
/* 1.C++语言本身支持的异常类 bad_alloc:new失败 bad_cast:动态类型转换 bad_typeid:类型推断是偶,typeid是零或空指针 bad_exception:非预期异常 2.C++程序问题引发异常 logic_error:逻辑问题 domain_error:域错误 invalid_argument:无效参数 length_error:超出长度 out_of_range:超出范围 3.程序作用域之外的错误 runtime_error:运行期错误 range_error:计算区间错误 overflow_error:上溢出 underflow_error:下溢出 */