Multiple Catch Blocks
Parte da seção Lógica & Fluxo do Journey de C# da Coddy — lição 25 de 66.
Múltiplos blocos catch permitem que você trate diferentes tipos de exceções com código específico para cada tipo de exceção.
Comece com um bloco try básico:
try
{
int number = int.Parse("abc");
}
Adicione um bloco catch para uma exceção específica:
try
{
int number = int.Parse("abc");
}
catch (FormatException ex)
{
Console.WriteLine("Format Exception: " + ex.Message);
}
Você pode adicionar múltiplos blocos catch para lidar com diferentes exceções:
try
{
int number = int.Parse("abc");
int result = a10 / number;
}
catch (FormatException ex)
{
Console.WriteLine("Format Exception: " + ex.Message);
}
catch (DivideByZeroException ex)
{
Console.WriteLine("Divide By Zero Exception: " + ex.Message);
}
O primeiro bloco catch correspondente será executado. Ordene seus blocos catch do mais específico ao mais geral tipos de exceção.
Desafio
FácilCrie um método chamado DivideNumbers que recebe dois parâmetros string:
numeratorStr: uma string representando o numeradordenominatorStr: uma string representando o denominador
O método deve:
- Tentar converter ambas as strings para inteiros
- Tentar dividir o numerador pelo denominador
- Retornar o resultado como um inteiro
- Tratar FormatException imprimindo "Invalid format" e retornando 0
- Tratar DivideByZeroException imprimindo "Cannot divide by zero" e retornando 0
- Tratar quaisquer outras exceções com um bloco catch geral que imprime "An error occurred" e retorna 0
Folha de consulta
Blocos catch múltiplos permitem que você trate diferentes tipos de exceções com código específico para cada tipo de exceção.
Try-catch básico com exceção específica:
try
{
int number = int.Parse("abc");
}
catch (FormatException ex)
{
Console.WriteLine("Format Exception: " + ex.Message);
}
Blocos catch múltiplos para diferentes exceções:
try
{
int number = int.Parse("abc");
int result = 10 / number;
}
catch (FormatException ex)
{
Console.WriteLine("Format Exception: " + ex.Message);
}
catch (DivideByZeroException ex)
{
Console.WriteLine("Divide By Zero Exception: " + ex.Message);
}
O primeiro bloco catch correspondente será executado. Ordene os blocos catch do mais específico para o mais geral em tipos de exceção.
Experimente você mesmo
using System;
public class Program
{
public static int DivideNumbers(string numeratorStr, string denominatorStr)
{
// Escreva seu código aqui
}
public static void Main(string[] args)
{
string numeratorStr = Console.ReadLine();
string denominatorStr = Console.ReadLine();
int result = DivideNumbers(numeratorStr, denominatorStr);
Console.WriteLine("Result: " + result);
}
}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