Excepciones

5. Excepciones

5.3. Tipos de Excepciones.

  1. Excepciones incorporadas o predefinidas

  2. Excepciones creadas personalizadas.

Excepciones incorporadas o predefinidas

La Biblioteca Estándar de C++ proporciona un conjunto de excepciones incorporadas derivadas de la clase std::exception, como std::runtime_error, std::out_of_range, etc.

Estas excepciones incorporadas tienen una jerarquía:


Estas excepciones incorporadas se pueden utilizar para atrapar tipos específicos de errores. Además, también puedes definir tus propias excepciones personalizadas. https://en.cppreference.com/w/cpp/error/exception

  

Hay excepciones estándar:


y se pueden crear otras excepciones con clases, también veremos un ejemplo de eso.

Excepciones creadas personalizadas.

Las excepciones personalizadas no especificadas en C++ pueden ser beneficiosas para producir bajo circunstancias específicas. En C++, cualquier tipo que cumpla con ciertos criterios puede ser capturado o arrojado.

Estos incluyen el tipo que tiene un constructor y un destructor de copias válidos.

Las excepciones personalizadas ofrecen el mecanismo de manejo de excepciones con información útil sobre un problema. Pueden crearse creando una nueva clase con las propiedades necesarias y lanzando una instancia de esa clase o heredando de std::exception y anulando la función what().

Podemos hacer una clase de excepción personalizada de la siguiente manera.


Class MyExceptionClass : public exception {
 public:
  const char* what() const throw() { return "Negative number not allowed\n"; }
};
Esto se puede capturar en el programa del controlador de la siguiente manera.

int main() {
  try {
    int a;
    cout << "Enter a number : \n";
    cin >> a;
    if (a < 0) {
      MyExceptionClass c;
      throw c;
    } else {
      cout << "you entered: " << a << endl;
    }
  } catch (exception& e) {
    cout << e.what();
  }
}
Podemos ver en el código anterior que hemos heredado nuestra clase de excepción personalizada con la clase Exception y anulamos un método what() que se llamará cuando se produzca la excepción.