Exceções Personalizadas
Parte da seção Lógica & Fluxo do Journey de C# da Coddy. Lição 29 de 66.
Exceções personalizadas permitem criar tipos específicos de exceção para os cenários de erro exclusivos do seu aplicativo.
Para criar uma exceção personalizada, defina uma classe que herda de Exception. Herança significa que sua nova classe recebe automaticamente todo o comportamento da classe pai, neste caso, Exception, permitindo que você adicione ou personalize funcionalidades. A sintaxe class MyException : Exception significa MyException estende Exception.
public class InvalidAgeException : Exception
{
public InvalidAgeException() : base("Age is not valid.")
{
}
public InvalidAgeException(string message) : base(message)
{
}
}: Exception: herda da classe interna Exception.: base(...): chama o construtor da classe pai Exception para definir a mensagem de erro.
O primeiro construtor fornece uma mensagem padrão quando nenhuma é fornecida.
O segundo construtor aceita uma mensagem personalizada para que quem chama possa descrever o erro em detalhes.
Agora você pode lançar sua exceção personalizada quando necessário:
int age = -5;
if (age < 0)
{
throw new InvalidAgeException("Age cannot be negative.");
}Quando este código é executado com uma idade negativa, ele lançará sua exceção personalizada com a mensagem "Age cannot be negative."
Observação: Nos exercícios desta lição, as funções de validação retornam true quando a entrada é válida e lançam uma exceção personalizada quando não é. Como uma exceção não tratada interrompe a execução imediatamente, os casos de teste precisam verificar apenas o caminho de retorno true: a própria exceção é o resultado observável para entradas inválidas.
Desafio
MédioCrie uma classe de exceção personalizada chamada InvalidTemperatureException que herde de Exception. Ela deve ter:
- Um construtor padrão que define a mensagem "Temperature is not valid."
- Um construtor que aceita uma mensagem personalizada.
Em seguida, implemente um método chamado checkTemperature que:
- Recebe um parâmetro inteiro que representa uma temperatura em Celsius
- Lança uma
InvalidTemperatureExceptioncom a mensagem "Temperature below absolute zero!" se a temperatura for menor que -273 - Retorna true se a temperatura for válida
Experimente você mesmo
using System;
class CheckTemperature
{
// Crie sua classe de exceção personalizada aqui
public static bool checkTemperature(int celsius)
{
// Escreva seu código aqui
}
}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
1Matrizes Multidimensionais
Noções Básicas de Matrizes 2DDeclaração e Inicialização de Matrizes 2DAcesso aos Elementos de Matrizes 2DLoops Aninhados com Matrizes 2DMatrizes IrregularesOperações Comuns com MatrizesRevisão - Multidimensional4Técnicas de Controle de Fluxo
Retornos AntecipadosCláusulas de GuardaInstruções de Salto (goto)Break e ContinueSimplificando Condicionais Aninhadas7Operadores Lógicos Avançados
Avaliação de Curto-CircuitoOperadores Lógicos CondicionaisPrecedência de OperadoresRevisão - Operadores Avançados2Tomada de Decisões Avançada
Múltiplas CondiçõesLógica Booleana ComplexaComparação entre If e SwitchInstruções Switch AninhadasRevisão - Decisões Avançadas5Tratamento de Exceções
Noções básicas de Try-CatchTipos de ExceçãoMúltiplos blocos CatchTrabalhando com ArquivosBloco FinallyUsando Using vs. Try-FinallyExceções PersonalizadasRecapitulação - Tratamento de Erros3Aprimoramentos de Loops
Desempenho de LoopsIteração de Estruturas ComplexasCada Tipo de LoopRefatoração de LoopsRevisão - Loops Otimizados6Tratamento de Nulos
Fundamentos de Referências NulasTipos de Valor AnuláveisPadrões de Verificação de NulosProgramação DefensivaRecapitulação — Segurança contra NulosPratique por conta própria: Compilador de C# online