异常处理(二)-----C++异常机制

来源:互联网 发布:自动通话录音软件 编辑:程序博客网 时间:2024/06/07 00:26

  异常机制提供了将控制权从程序的一部分传递到另一部分的途径。由三部分组成,分别是:

引发异常   使用处理程序扑获异常  使用try块

  首先先举一个使用异常的例子:

int division(int a, int b){if (b == 0){throw "Error b ==0 ";}return a / b;}int main(void){int a, b, res;cout << "Please input numbers to divison" << endl;while (cin >> a >> b){try{res = division(a, b);}catch (char* s){cout << s << endl << "Please input next numbers"<<endl;continue;}cout << "res=" << res << endl;cout << "Please input next numbers" << endl;}return 0;}

throw语句实际上是跳转,既命令程序跳转到另一个语句,它表示引发异常,紧随其后的值指出了异常特征(字符串或对象)。
try关键字后面的花括号表示需要注意这段代码可能会出现异常,其后必须紧随一个或多个catch块,catch关键字表明扑获异常并且是异常处理程序的开始。
执行throw语句类似执行返回语句,因为它将终止函数的执行,它的返回是沿着函数调用序列后退,直到找到包含try块的函数。
如果没有异常,程序将跳过try块后面的catch块。
如果程序引发异常而没有匹配的try块或者catch块,在默认情况下函数将调用abort()函数。
如果throw的是一个对象那么throw 语句返回的是该对象的副本,尽管catch中还是用指针或引用接收的。既然这样还是使用指针或引用的原因是在继承关系中可以使用虚函数。
  最后我们通常在程序中使用将对象作为异常类型用以携带信息和区分不同函数的不同异常。
原创粉丝点击