对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语句块捕捉到并进行处理。
(运行之后感觉这个程序有问题,结果总是不确定的,但还不到是什么问题。。。。。。。。。。)
时间: 2024-10-07 18:13:21