Tipos de Exceção
Parte da seção Lógica & Fluxo do Journey de C# da Coddy. Lição 24 de 66.
No C#, as exceções são categorizadas em diferentes tipos com base no erro que representam. Compreender esses tipos ajuda você a lidar com erros de forma mais eficaz.
Vamos ver os tipos comuns de exceções:
A classe base para todas as exceções é System.Exception.
try
{
// Código que pode lançar uma exceção
}
catch (Exception ex)
{
// Trate qualquer exceção
Console.WriteLine(ex.Message);
}Alguns tipos comuns de exceções:
ArgumentException: Lançada quando um método é chamado com um argumento inválido.
string name = null;
if (name == null)
{
throw new ArgumentException("Name cannot be null");
}NullReferenceException: Lançada quando você tenta acessar um membro em uma referência nula.
string text = null;
// Isso lançará NullReferenceException
int length = text.Length;IndexOutOfRangeException: Lançada quando um índice de array está fora dos limites do array.
int[] numbers = { 1, 2, 3 };
// Isso lançará IndexOutOfRangeException
int value = numbers[5];DivideByZeroException: Lançada quando um inteiro é dividido por zero.
int result = 10 / 0; // This will throw DivideByZeroExceptionVocê pode capturar exceções específicas:
try
{
int[] numbers = { 1, 2, 3 };
int value = numbers[5];
}
catch (IndexOutOfRangeException ex)
{
Console.WriteLine("Array index error: " + ex.Message);
}
catch (Exception ex)
{
Console.WriteLine("General error: " + ex.Message);
}Desafio
FácilCrie um método chamado ProcessArray que:
- Recebe um array de inteiros e um índice como parâmetros
- Tenta acessar o elemento no índice especificado
- Retorna o valor do elemento se bem-sucedido
- Se uma
IndexOutOfRangeExceptionocorrer, capture-a e retorne -1
Seu método deve ter esta assinatura:
public static int ProcessArray(int[] array, int index)Experimente você mesmo
using System;
class Program
{
public static int ProcessArray(int[] array, int index)
{
// Escreva seu código aqui
return 0;
}
static void Main(string[] args)
{
// Ler entrada do array
string input = Console.ReadLine();
// Remover colchetes se presentes
if (input.StartsWith("[") && input.EndsWith("]"))
{
input = input.Substring(1, input.Length - 2);
}
string[] parts = input.Split(',');
int[] array = new int[parts.Length];
for (int i = 0; i < parts.Length; i++)
{
array[i] = int.Parse(parts[i].Trim());
}
// Ler entrada do índice
int index = int.Parse(Console.ReadLine());
int result = ProcessArray(array, index);
Console.WriteLine(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