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 = 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 seus blocos catch dos tipos de exceção mais específicos para os mais genéricos.
Desafio
FácilCrie um método chamado DivideNumbers que recebe dois parâmetros de 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
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