//此程序意在测试throw catch 时,程序控制权传递的问题 //可以发现:当 throw 之后,控制权传到相对应的 catch 块(必须是块语句),来进行异常处理 //throw 之后,catch 之前的所有语句均被跳过 //如果for是包含在try里面的,也会编译不通过,因为,抛出异常后,没有对应的 catch 异常处理程序来处理异常 #include<iostream> using namespace std; void main() { cout<<endl; for(int i=0;i<7;i++) { try { if(i<3) throw i ; cout<<"未被抛出的i为: "<<i<<endl; if(i>5) throw "另外一个异常。" ; cout<<"for循环(for loop body)运行到catch前。"<<endl; } catch (const int i) {cout<<"被捕获的i为: "<<i<<endl;} catch (const char* pMessage) {cout<<"异常信息为: "<<pMessage<<endl;}//catch后面必须是块语句,否则编译不通过 cout<<"程序运行到for循环结尾。"<<endl; } }