Excepciones
5. Excepciones
5.3. Tipos de Excepciones.
Excepciones incorporadas o predefinidas
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.