Custom Exceptions
Parte da seção Lógica & Fluxo do Journey de C# da Coddy — lição 29 de 66.
Exceções personalizadas permitem que você crie tipos específicos de exceções para cenários de erro únicos da sua aplicação.
Para criar uma exceção personalizada, defina uma classe que herda de Exception. Herança significa que sua nova classe ganha automaticamente todo o comportamento da classe pai — neste caso, Exception — enquanto permite 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 Exception integrada.: base(...) — chama o construtor 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 os chamadores possam 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 for executado com uma idade negativa, ele lançará sua exceção personalizada com a mensagem "Age cannot be negative."
Nota: 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 só precisam verificar o caminho de retorno true — a exceção em si é o resultado observável para entradas inválidas.
Desafio
MédioCrie uma classe de exceção personalizada chamada InvalidTemperatureException que herda de Exception. Ela deve ter:
- Um construtor padrão que define uma 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 representando 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
Folha de consulta
Para criar uma exceção personalizada, defina uma classe que herda de Exception:
public class InvalidAgeException : Exception
{
public InvalidAgeException() : base("Age is not valid.")
{
}
public InvalidAgeException(string message) : base(message)
{
}
}Lance sua exceção personalizada quando necessário:
int age = -5;
if (age < 0)
{
throw new InvalidAgeException("Age cannot be negative.");
}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
1Multi-dimensional Arrays
2D Arrays BasicsDeclaring and Initializing 2DAccessing 2D Array ElementsNested Loops with 2D ArraysJagged ArraysCommon Matrix OperationsRecap - Multi-dimensional4Flow Control Techniques
Early ReturnsGuard ClausesJump Statements (goto)Break and ContinueFlatten Nested Conditionals7Logical Operators Advanced
Short-Circuit EvaluationConditional Logical OperatorsOperator PrecedenceRecap - Advanced Operators2Advanced Decision Making
Multiple ConditionsComplex Boolean LogicIf vs. Switch ComparisonNested Switch StatementsRecap - Advanced Decisions5Exception Handling
Try-Catch BasicsException TypesMultiple Catch BlocksWorking with FilesFinally BlockUsing vs. Try-FinallyCustom ExceptionsRecap - Error Handling3Loop Enhancements
Loop PerformanceIterating ComplexEach Loop TypeRefactoring LoopsRecap - Optimized Loops6Null Handling
Null Reference BasicsNullable Value TypesNull Checking PatternsDefensive ProgrammingRecap - Null Safety