Fallo de segmentación de captura en c ++

Hace untry-catch ¿Bloquear errores de segmentación de captura errores?

Estoy leyendo un archivo de texto con la función que se muestra a continuación, pero a veces el archivo está vacío y el programa se bloquea. Me gustaría que el programa continúe ejecutándose y proporcione otro archivo cuando este archivo esté vacío o en uso.

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;


}

Probé algo como:

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

pero el programa sigue fallando. ¿Cuál podría ser el problema?

Una pequeña corrección, el archivo llamado encatch no era el mismo que el detry, eso fue un error tipográfico.

Respuestas a la pregunta(6)

Su respuesta a la pregunta