首页  

c++异常处理     所属分类 c 浏览量 243
throw 表达式
用表达式的值生成一个对象(异常对象) 
Terminate函数,终止程序的执行

try-catch语句

try{
  // 
}catch(类型名 [形参名]){
  // 
}catch(类型名 [形参名]){
  // 
}

值类型 函数名(形参表) throw(类型名表) 函数体
void func() throw (int, double, A, B, C);

throw(); // 不会抛异常
throw(类型名); // 抛指定类型的异常

catch(...) 捕获所有的异常 

try {
  //
}catch (string s ) {
  cout << "error:" << s << endl;
  throw; // 继续抛出捕获的异常
}



异常处理仅通过类型匹配
异常对象 并非创建在函数栈上,而是创建在专用的异常栈上,可以跨多个函数传递到上层
函数原型中的异常说明要与实现中的异常说明一致

函数会抛出没有被说明的异常,异常处理机制会检测到这个冲突并调用标准库函数unexcepted()
unexcepted()的默认行为就是调用terminate()来结束程序
使用set_unexcepter() 设置一个回调函数

catch块的参数应采用引用传递而不是值传递

派生类的异常捕获要放到父类异常之前  先具体再抽象

派生类改写的虚函数的异常说明至少要和对应的基类的相同,甚至更加严格


C++标准异常类 从 exception 类派生 bad_typeid bad_cast bad_alloc out_of_range

上一篇     下一篇
编程名言名句

C++11 lambda

编程的十个至理名言

c++菱形继承

c++ 虚函数多态

几个有趣的C语言面试题及答案