使用try {...} catch(..){...}代替转到

Ale*_*eev 1 c++ goto try-catch

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

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();
}
Run Code Online (Sandbox Code Playgroud)

Lig*_*ica 5

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

也就是说,如果您不太关心性能,只要您不在互联网上告诉任何人,只要您没有生产要求或长期,您就可以侥幸逃脱期限维护要求.

在这种情况下,除了最终的成功案例外,您似乎正在正确使用异常.

  • -1因为你错了,但顺便说一句,如果你觉得这个问题没有足够的建设性来关闭它,那你为什么要回答呢? (3认同)