c++异常处理关键字

c++中异常处理的关键字有:throw try catch。c++中的异常处理机制只能处理有throw捕获的异常,没有捕获的将忽略。

抛出异常即检测是否产生异常,在C++中,其采用throw语句来实现,如果检测到产生异常,则抛出异常。该语句的格式为:

    throw 表达式

如果在try语句块的程序段中(包括在其中调用的函数)发现了异常,且抛弃了该异常,则这个异常就可以被try语句块后的某个catch语句所捕获并处理,捕获和处理的条件是被抛弃的异常的类型与catch语句的异常类型相匹配。由于C++使用数据类型来区分不同的异常,因此在判断异常时,throw语句中的表达式的值就没有实际意义,而表达式的类型就特别重要

try-catch语句形式如下 :

try 
{  
        包含可能抛出异常的语句;  
}  
catch(类型名 [形参名]) // 捕获特定类型的异常  
{  
 
}  
catch(类型名 [形参名]) // 捕获特定类型的异常  
{  
 
}  
catch(...)    // 三个点则表示捕获所有类型的异常  
{  
}

 【范例1】处理除数为0的异常。该范例将上述除数为0的异常可以用try/catch语句来捕获异常,并使用throw语句来抛出异常,从而实现异常处理,实现代码如代码清单1-1所示。

// 代码清单1-1

 1 #include<iostream.h>     //包含头文件  
 2 #include<stdlib.h>  
 3  
 4 double fuc(double x, double y) //定义函数  
 5 {  
 6     if(y==0)  
 7     {  
 8         throw y;     //除数为0,抛出异常  
      //throw "num2=0 invalid parameter";
9 } 10 return x/y; //否则返回两个数的商 11 } 12 13 void main() 14 { 15 double res; 16 try //定义异常 17 { 18 res=fuc(2,3); 19 cout<<"The result of x/y is : "<<res<<endl; 20 res=fuc(4,0); 出现异常,函数内部会抛出异常 21 } 22 catch(double) //捕获并处理异常 23 { 24 cerr<<"error of dividing zero.\n"; 25 exit(1); //异常退出程序 26 }
    /*catch(char* err)
    {
      printf("%s\n",err);
    }*/
    
27 }

 

在有些地方看到

throw new str::expression("ivalid param");

catch(...)

{

  if(条件)

  esle

}

 

posted @ 2017-03-22 10:01  ren_zhg1992  阅读(827)  评论(0)    收藏  举报