Menu
Coddy logo textTech

A Palavra-chave 'throw'

Parte da seção Lógica & Fluxo do Journey de C++ da Coddy. Lição 50 de 56.

Às vezes, você precisa sinalizar que ocorreu um erro no seu próprio código, em vez de apenas capturar exceções lançadas por outras funções. A palavra-chave throw permite disparar manualmente uma exceção quando seu programa detecta um problema.

Você pode lançar diferentes tipos de valores como exceções — inteiros, strings ou até mesmo objetos personalizados. Esta é a sintaxe básica:

if (someErrorCondition) {
    throw "Error message";  // Lança um literal de string
}

Quando você usa throw, o programa para imediatamente de executar a função atual e procura um bloco catch que possa lidar com o valor lançado. Isso é particularmente útil para validar entradas ou verificar condições que não deveriam ocorrer durante a execução normal do programa.

Aqui está um exemplo prático de como lançar uma exceção ao detectar uma entrada inválida:

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

A palavra-chave throw dá a você controle sobre quando e como os erros são relatados em seus programas, tornando suas funções mais robustas e previsíveis ao lidar com condições inválidas.

challenge icon

Desafio

Fácil

Crie um programa que implemente a validação de entrada usando a palavra-chave throw para disparar exceções manualmente quando condições inválidas forem detectadas. Este desafio testará sua compreensão de como usar throw para sinalizar erros em suas próprias funções.

As seguintes entradas serão fornecidas:

  • Uma string username representando o nome de usuário escolhido por uma pessoa (esta linha pode estar vazia)
  • Um inteiro age representando a idade da pessoa

Seu programa deve:

  1. Criar uma função chamada validateUser que receba uma string e um inteiro como parâmetros
  2. Dentro da função, verificar se o nome de usuário está vazio (tem comprimento 0)
  3. Se o nome de usuário estiver vazio, usar throw com a string "Username cannot be empty"
  4. Verificar se a idade é menor que 13
  5. Se a idade for menor que 13, usar throw com a string "Age must be at least 13"
  6. Se ambas as validações forem aprovadas, imprimir "User validation successful"
  7. Na função principal, chamar validateUser com os valores de entrada
  8. Usar um bloco try para chamar a função e um bloco catch para tratar quaisquer exceções de string lançadas

Use o seguinte formato exato de saída:

Para uma validação bem-sucedida:

User validation successful

Para erros de validação:

Validation error: [error_message]

Lembre-se de que, ao usar throw, o programa interrompe imediatamente a execução da função atual e procura um bloco catch correspondente. O bloco catch deve especificar o tipo const char* para tratar os literais de string lançados. Se a primeira validação falhar, a função lançará uma exceção e não continuará verificando a segunda condição.

Experimente você mesmo

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

int main() {
    // Ler entrada
    string username;
    int age;
    getline(cin, username);
    cin >> age;
    
    // TODO: Escreva seu código aqui
    // Crie a função validateUser e implemente a lógica de validação
    // Use blocos try-catch para tratar exceções
    
    return 0;
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Lógica & Fluxo

Pratique por conta própria: Compilador de C++ online