Catch-Segmentierungsfehler in c ++

Tut eintry-catch Blockfangsegmentierungsfehler Fehler?

Ich lese eine Textdatei mit der unten angegebenen Funktion, aber manchmal ist die Datei leer und das Programm stürzt ab. Ich möchte, dass das Programm weiterhin ausgeführt wird und eine andere Datei bereitstellt, wenn diese Datei leer ist oder verwendet wird.

Path2D read_gesture(const char* filename)
{
    Path2D path;
    //MultiStrokeGesture MultiStrokes;

    vector<string> text_file;

    int no_of_paths=0;
    std::ifstream ifs(filename);

    for (std::string line; std::getline(ifs, line); )
    {
        no_of_paths=no_of_paths+1;
        double a, b;
        stringstream ss(line);
        if (!(ss >> a >> b)) {cout<<"wrong format"<<endl;}
        std::cout << "You said, " << a << ", " << b << ".\n";
        path.push_back(Point2D(a,b));

    }
    cout<<"saving gesture"<<endl;
    return path;


}

Ich habe versucht, etwas wie:

Path2D path;
try 
{
    path=read_gesture("test.txt");
}
catch(int e)
{
    path=read_gesture("test2.txt");
}

aber das programm stürzt trotzdem ab. Was könnte das Problem sein?

Eine kleine Korrektur, die Datei aufgerufencatch war nicht dasselbe wie das vontry, das war ein Tippfehler.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage