1

像 goto 一样使用 try-catch 是不好的做法吗?例如,简单的代码

try{
    if(argc<2){
        std::cout<<"no inputfile"<<std::endl;
        throw 1;
    }
    STARTUPINFO cif;
    ZeroMemory(&cif,sizeof(STARTUPINFO));
    PROCESS_INFORMATION pi;
    if(FALSE==CreateProcess(argv[1],NULL,NULL,NULL,FALSE,NULL,NULL,NULL,
                            &cif,&pi)){
        printf("smth is wrong");
        throw 1;
    }
    WaitForSingleObject(pi.hProcess, INFINITE);
    GetExitCodeProcess(pi.hProcess, &exitCode);
    std::cout<<"Process return"<<exitCode<<std::endl;
    throw 1;
}
catch(int a){
    printf("press Enter");
    getchar();
}
4

2 回答 2

5

如果你问在程序流中使用异常是否是错误的,答案是肯定的,这是错误的

也就是说,对于你不太关心性能的情况,只要你不在互联网上告诉任何人,只要你没有生产要求或长长期维护要求。

在这种情况下,除了最终的成功案例之外,您似乎对所有事情都正确使用了异常。

于 2012-10-26T12:00:26.373 回答
1

一般来说(就像在与语言无关的意义上,全面)使用 try/catch 机制作为控制流管理辅助是不好的做法。按预期使用它来管理异常。使用控制流构造来控制流。

于 2012-10-26T11:59:42.003 回答