第一次看到可以这样写,涨见识了。

int main()
{
bool throw_x = true;
int i,j,k;
try{
for(i=0;i<10;i++){
for(j=0;j<10;j++){
for(k=0;k<10;k++){
if(i==1 && j==2 && k==6){
throw throw_x;
}
}
}
}
}catch(...){
cout<<"i="<<i<<",j="<<j<<",k="<<k<<endl;
}
}

我一直认为合适的地方使用goto是个不错的想法,比如多重循环跳出。
注意不要方法中使用多个goto,注意goto lable之间变量的定义。
当然,有很多方法可以替代goto,比如增加判断,但是必然导致不良的可读性。
goto只是一个工具,用好他是程序员的职责,不要片面完全否认goto,存在即为合理。(linux源码都有很多goto)。)

另外一个goto替代:

do{
if(..)
break;
}while(0);//while(false) while( __LINE__ == -1)