C++ Excepciones
C++ Excepciones
Al ejecutar código C++ pueden ocurrir diferentes errores: errores de codificación cometidos por el programador, errores por entradas incorrectas u otras cosas imprevisibles.
Cuando ocurre un error, C++ normalmente se detendrá y generará un mensaje de error. El término técnico para esto es: C++ generará una excepción (arrojará un error).
C++ try y catch
El manejo de excepciones en C++ consta de tres palabras clave: try
, throw
y catch
:
La instrucción try
le permite definir un bloque de código que se probará en busca de errores mientras se ejecuta.
La palabra clave throw
genera una excepción cuando se detecta un problema, lo que nos permite crear un error personalizado.
La instrucción catch
le permite definir un bloque de código que se ejecutará si se produce un error en el bloque try.
Las palabras clave try
y catch
vienen en pares:
Ejemplo
try {
// bloque de código para try
throw exception; // Lanzar una excepción cuando surge un problema
}
catch () {
// Bloque de código para manejar errores
}
Considere el siguiente ejemplo:
Ejemplo
try {
int age = 15;
if (age >= 18) {
cout << "Acceso concedido: tienes edad suficiente.";
} else {
throw (age);
}
}
catch (int myNum) {
cout << "Acceso denegado - Debes tener al menos 18 años.\n";
cout << "La edad es: " << myNum;
}
Inténtalo tú mismo »
Ejemplo explicado
Usamos el bloque try
para probar algún código: si la variable age
es menor que 18
, throw
una excepción y la manejaremos en nuestro catch
bloquear.
En el bloque catch
, detectamos el error y hacemos algo al respecto. La declaración catch
toma un parámetro: en nuestro ejemplo usamos una variable int
(myNum
) (porque estamos lanzando una excepción de int
escriba en el bloque try
(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), se omite el bloque catch
:
También puede utilizar la palabra clave throw
para generar un número de referencia, como un número/código de error personalizado para fines de organización (505
en nuestro ejemplo):
Ejemplo
try {
int age = 15;
if (age >= 18) {
cout << "Acceso concedido: tienes edad suficiente.";
} else {
throw 505;
}
}
catch (int myNum) {
cout << "Acceso denegado - Debes tener al menos 18 años.\n";
cout << "Número de error: " << myNum;
}
Inténtalo tú mismo »
Manejar cualquier tipo de excepciones (...)
Si no conoce el throw
tipo utilizado en el try
bloque, puede utilizar la sintaxis de "tres puntos" (...
) dentro del bloque catch
, que manejará cualquier tipo de excepción:
Ejemplo
try {
int age = 15;
if (age >= 18) {
cout << "Acceso concedido: tienes edad suficiente.";
} else {
throw 505;
}
}
catch (...) {
cout << "Acceso denegado - Debes tener al menos 18 años.\n";
}
Inténtalo tú mismo »