Menu
Coddy logo textTech

La palabra clave 'throw'

Parte de la sección Lógica y Flujo del Journey de C++ de Coddy. Lección 50 de 56.

A veces necesitas señalar que se ha producido un error en tu propio código, en lugar de limitarte a capturar las excepciones lanzadas por otras funciones. La palabra clave throw te permite activar manualmente una excepción cuando tu programa detecta un problema.

Puedes lanzar distintos tipos de valores como excepciones: enteros, cadenas o incluso objetos personalizados. Esta es la sintaxis básica:

if (someErrorCondition) {
    throw "Error message";  // Lanza un literal de cadena
}

Cuando usas throw, el programa deja de ejecutar inmediatamente la función actual y busca un bloque catch que pueda gestionar el valor lanzado. Esto resulta especialmente útil para validar input o comprobar condiciones que no deberían producirse durante la ejecución normal del programa.

Aquí tienes un ejemplo práctico de cómo lanzar una excepción al detectar una entrada no válida:

void checkAge(int age) {
    if (age < 0) {
        throw "Age cannot be negative!";
    }
    std::cout << "Age is valid: " << age << std::endl;
}

La palabra clave throw te permite controlar cuándo y cómo se notifican los errores en tus programas, haciendo que tus funciones sean más sólidas y predecibles al tratar con condiciones no válidas.

challenge icon

Desafío

Fácil

Crea un programa que implemente la validación de entradas utilizando la palabra clave throw para activar manualmente excepciones cuando se detecten condiciones no válidas. Este desafío pondrá a prueba tu comprensión de cómo usar throw para señalar errores en tus propias funciones.

Se proporcionarán las siguientes entradas:

  • Una cadena username que representa el nombre de usuario elegido por una persona (esta línea puede estar vacía)
  • Un entero age que representa la edad de la persona

Tu programa debe:

  1. Crear una función llamada validateUser que reciba una cadena y un entero como parámetros
  2. Dentro de la función, comprobar si el nombre de usuario está vacío (tiene una longitud de 0)
  3. Si el nombre de usuario está vacío, throw la cadena "Username cannot be empty"
  4. Comprobar si la edad es menor que 13
  5. Si la edad es menor que 13, throw la cadena "Age must be at least 13"
  6. Si ambas validaciones tienen éxito, imprimir "User validation successful"
  7. En la función principal, llamar a validateUser con los valores de entrada
  8. Usar un bloque try para llamar a la función y un bloque catch para gestionar cualquier excepción de cadena lanzada

Usa el siguiente formato de salida exacto:

Para una validación exitosa:

User validation successful

Para errores de validación:

Validation error: [error_message]

Recuerda que cuando usas throw, el programa deja de ejecutar inmediatamente la función actual y busca un bloque catch coincidente. El bloque catch debe especificar el tipo const char* para gestionar los literales de cadena lanzados. Si la primera validación falla, la función lanzará una excepción y no continuará comprobando la segunda condición.

Pruébalo tú mismo

#include <iostream>
#include <string>
using namespace std;

int main() {
    // Leer entrada
    string username;
    int age;
    getline(cin, username);
    cin >> age;
    
    // TODO: Escribe tu código aquí
    // Crea la función validateUser e implementa la lógica de validación
    // Usa bloques try-catch para manejar excepciones
    
    return 0;
}
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Lógica y Flujo

Practica por tu cuenta: Compilador de C++ online