首页 > 代码库 > C++基础知识(4)---例外、异常处理

C++基础知识(4)---例外、异常处理

     对Java熟悉的朋友们都很清楚,java中的异常处理机制是非常完善的。并且java强制使用异常处理,用户必须对有可能出现异常的情况进行处理。

    在C++中并没有强制用户使用异常处理,但是使用异常处理将会使您的程序更加的简健壮。

    在C++中,一个函数在执行的过程中可以识别异常,并告诉异常的发生。这种通告机制称为 抛出异常 ,使用关键字throw。异常抛出后,可以由函数的调用者进行 捕捉 并进行处理,使用关键字catch .我们一般讲可能会抛出异常的程序块放到 try 语句中去执行,以便用 catch 来进行捕捉。  

 1 try
 2 {
 3   f();   //f() 可能抛出一些异常  
 4 }
 5 
 6 catch(int a)
 7 {
 8    ............
 9 }
10 catch(int b)
11 {
12   .........
13 }

 

      try 程序块可能会抛出异常,有catch 程序块来进行捕捉。catch 块之间的顺序可以任意,但是必须位于 try 之后,另外catch 块会将抛出的异常类型进行对比,如果匹配则进行捕捉

   举一个例子 

 1 #include <iostream>
 2 #include <string>
 3 
 4 using namespace std;
 5 
 6 void main()
 7 {
 8     string str;
 9     int index, length;
10     while (true)
11     {
12         cout << "please enter the index and length to erase:" << endl;
13         cin >>index>>length;
14         try
15         {
16             str.erase(index, length);
17         }
18         catch (out_of_range)
19         {
20             continue;
21         }
22         break;
23     }
24 }

 

 

       如果输入的index大于字符串的长度将会引发一个异常out_of_range,即数组下标越界,这时异常就会被catch语句块捕捉到并进行处理。

   (运行之后感觉这个程序有问题,结果总是不确定的,但还不到是什么问题。。。。。。。。。。)

 

C++基础知识(4)---例外、异常处理