Excepciones de C++
Excepciones de C++
Al ejecutar código C++, pueden ocurrir diferentes errores: errores de codificación por parte del programador, errores debido a una entrada incorrecta u otros imprevistos.
Cuando ocurre un error, C++ normalmente se detendrá y generará un mensaje de error. El término técnico para esto es: C++ lanzará una excepción (arrojará un error).
C++ prueba y captura
El manejo de excepciones en C++ consta de tres palabras clave: try
, throw
y catch
:
La try
declaración le permite definir un bloque de código para probar errores mientras se ejecuta.
La throw
palabra clave genera una excepción cuando se detecta un problema, lo que nos permite crear un error personalizado.
La catch
instrucción le permite definir un bloque de código que se ejecutará si ocurre un error en el bloque de prueba.
Las palabras clave try
y catch
vienen en pares:
Ejemplo
try {
// Block of code to try
throw exception;
// Throw an exception when a problem arise
}
catch () {
// Block of code to handle errors
}
Considere el siguiente ejemplo:
Ejemplo
try {
int age = 15;
if (age >= 18) {
cout << "Access granted - you are old enough.";
} else {
throw (age);
}
}
catch (int
myNum) {
cout << "Access denied - You must be at least 18 years
old.\n";
cout << "Age is: " << myNum;
}
Ejemplo explicado
Usamos el try
bloque para probar algún código: si la age
variable es menor que 18
, haremos throw
una excepción y la manejaremos en nuestro catch
bloque.
En el catch
bloque, detectamos el error y hacemos algo al respecto. La catch
declaración toma un parámetro : en nuestro ejemplo usamos una int
variable ( myNum
) (porque estamos lanzando una excepción de int
tipo en el try
bloque ( age
)), para generar el valor de age
.
Si no se produce ningún error (por ejemplo, si age
es 20
en lugar de 15
, lo que significa que será mayor que 18), el catch
bloque se salta:
Ejemplo
int age = 20;
También puede usar la throw
palabra clave para generar un número de referencia, como un número/código de error personalizado para fines de organización:
Ejemplo
try {
int age = 15;
if (age >= 18) {
cout << "Access granted - you are old enough.";
} else {
throw 505;
}
}
catch (int myNum) {
cout << "Access denied - You must be at least 18 years old.\n";
cout << "Error number: " << myNum;
}
Manejar cualquier tipo de excepciones (...)
Si no conoce el throw
tipo utilizado en el try
bloque, puede usar la sintaxis de "tres puntos" ( ...
) dentro del catch
bloque, que manejará cualquier tipo de excepción:
Ejemplo
try {
int age = 15;
if (age >= 18) {
cout << "Access granted - you are old enough.";
} else {
throw 505;
}
}
catch (...) {
cout << "Access denied - You must be at least 18 years
old.\n";
}