如何使用catch try-catch

How to use a catch try catch?

本文关键字:try-catch catch 何使用      更新时间:2023-10-16

我的教授给了我们一个try-catch块,他希望我们从现在起将其用于所有代码。在阅读了它之后,我仍然有点困惑于如何将它实现到我的程序中。

他希望我们在程序中实现的代码。

try {
return 0;
}
catch (exception& e) {
    cerr << "error: " << e.what() << 'n';
    keep_window_open();
    return 1;
}
catch (...) {
    cerr << "Oops: unknown exception!n";
    keep_window_open();
    return 2;
}

我正在做的一个程序。

#include "std_lib_facilities_4a.h"
bool yes()
{
string y;
cin >> y;
if (y[0] == 'y' || y[0] == 'Y')
    {
    return true;
    }
else 
    return false;
}
int main()
{
enum {question1=1, question2=2, question3=4};
int result = 0;
cout << " Is what your thinking of red?n";
if (yes() == true)
    {
    result += question1;
    }
cout << " Is what your thinking of round?n";
if (yes() == true)
    {
    result += question2;
    }
cout << " Is what your thinking of an animal?n";
if (yes() == true)
    {
    result += question3;
    }
vector<string> answer = {"You are thinking of a blue square!.","You are thinking of a red square!","you are thing of a blue circle!","You are thinking of a red circle!","you are thinking of a blue animal!","you are thinking of a red animal!","you are thinking of a blue round animal!","You are thinking of a red turtle!"};
cout << answer[result];
return 0;
}

听起来他想让你把main中的代码放在try块中。然后,如果程序中有任何东西抛出异常,而没有其他东西处理它,那么其中一个处理程序将捕获它并干净地结束程序。所以你的main看起来像

int main() try {
    // your code here
    return 0;   // optional, but polite
} catch (exception& ex) { // better to catch a const reference
    // report it
    return 1;  // should be EXIT_FAILURE for portability
} catch (...)
    // report it
    return 2;  // should also be EXIT_FAILURE
}

如果没有它们,一个未捕获的异常将导致程序通过调用terminate而混乱地结束。在我看来,这更好,因为它往往更容易调试。但在短期内,按照老师的话做,以后再改掉所有这些坏习惯可能会更容易。