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.
Desafio
FácilCrie 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
usernamerepresentando o nome de usuário escolhido por uma pessoa (esta linha pode estar vazia) - Um inteiro
agerepresentando a idade da pessoa
Seu programa deve:
- Criar uma função chamada
validateUserque receba uma string e um inteiro como parâmetros - Dentro da função, verificar se o nome de usuário está vazio (tem comprimento 0)
- Se o nome de usuário estiver vazio, usar
throwcom a string"Username cannot be empty" - Verificar se a idade é menor que 13
- Se a idade for menor que 13, usar
throwcom a string"Age must be at least 13" - Se ambas as validações forem aprovadas, imprimir
"User validation successful" - Na função principal, chamar
validateUsercom os valores de entrada - Usar um bloco
trypara chamar a função e um blococatchpara tratar quaisquer exceções de string lançadas
Use o seguinte formato exato de saída:
Para uma validação bem-sucedida:
User validation successfulPara 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;
}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
1Ponteiros e Memória
O que é um Ponteiro?Operador de EndereçoOperador de DesreferenciaçãoPonteiros NulosPonteiros e ArraysMemória Dinâmica com 'new'Liberando Memória com 'delete'Recapitulação - Prática com Ponteiros2Vetores (Arrays Dinâmicos)
Introdução ao std::vectorCriando um VetorAdicionando ElementosAcessando ElementosTamanho do VetorIterando com um Loop ForLoop For Baseado em IntervaloRemovendo ElementosRecapitulação - Operações com Vetores5Projeto: Ferramenta de Inventário
Configuração do ProjetoAdicionando e Atualizando Itens8Tratamento Básico de Erros
Introdução a ExceçõesOs Blocos 'try' e 'catch'A Palavra-chave 'throw'Diferentes Tipos de ExceçãoO Manipulador Catch-AllRecapitulação - Divisão Segura3Projeto: Ferramenta de Lista de Tarefas
Visão Geral do ProjetoAdicionando uma TarefaPratique por conta própria: Compilador de C++ online