Múltiplos blocos Catch
Parte da seção Lógica & Fluxo do Journey de C# da Coddy. Lição 25 de 66.
Vários blocos catch permitem lidar com 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 vários 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 aos mais gerais.
Desafio
FácilCrie um método chamado DivideNumbers que receba dois parâmetros do tipo string:
numeratorStr: uma string que representa o numeradordenominatorStr: uma string que representa o denominador
O método deve:
- Tentar analisar ambas as strings como números inteiros
- Tentar dividir o numerador pelo denominador
- Retornar o resultado como um número inteiro
- Lidar com
FormatExceptionimprimindo "Invalid format" e retornando 0 - Lidar com
DivideByZeroExceptionimprimindo "Cannot divide by zero" e retornando 0 - Lidar com quaisquer outras exceções usando 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
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