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 に答える