Skip to content

Seguís silenciando excepciones #18

Description

@fedemgp

try {
worker.start();
} catch (std::invalid_argument& e) {
std::cerr << e.what() << std::endl;
} catch (...) {
std::cerr << GENERIC_ERROR << std::endl;
}

  try {
    worker.start();
  } catch (std::exception& e) {
    std::cerr << e.what() << std::endl;
  } catch (...) {
    std::cerr << GENERIC_ERROR << std::endl;
  }

De esta forma, si se lanza la excepción std::invalid_argument que usás vos, va a ser catcheada en el catch de std::exception (porque std::invalid_argument hereda de std::exception) y además, cualquier excepción que alguna de las funciones de la STL lance, las vas a catchear e imprimir el mensaje correspondiente para ayudarte a vos como programador a debuggear tu programa.

De la forma que estabas haciendo vos, si por algún descuido, por ejemplo, indexaras al vector de clientes con un indice mayor a su tamaño, tendrías un out_of_range_exception. Como tus catchs solo catchean un std::invalid_argument y todo lo que herede de él, la excepción de out_of_range la va a atrapar las elispsis, y el mensaje de error no lo vas a poder ver y el debugging se va a transformar en una tarea tediosa.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions