16.11. Orientação a Objetos em C#: Manipulação de Exceções
Página 27 | Ouça em áudio
A orientação a objetos em C# é uma abordagem de programação que envolve a criação de objetos que contêm tanto dados quanto métodos. Uma das partes mais importantes da orientação a objetos em C# é a manipulação de exceções. As exceções são eventos que ocorrem durante a execução de um programa que interrompem o fluxo normal do programa.
Em C#, a manipulação de exceções é feita principalmente através do uso de blocos try, catch e finally. O bloco try contém o código que pode potencialmente causar uma exceção. O bloco catch é usado para lidar com a exceção se ela ocorrer. O bloco finally contém o código que é sempre executado, independentemente de uma exceção ocorrer ou não.
Vamos começar com um exemplo simples. Considere o seguinte código:
try { int x = 0; int y = 5 / x; } catch (DivideByZeroException e) { Console.WriteLine(e.Message); } finally { Console.WriteLine("Bloco finally executado."); }
Neste exemplo, estamos tentando dividir um número por zero, o que resultará em uma exceção DivideByZeroException. Quando essa exceção é lançada, o controle é passado para o bloco catch, que imprime a mensagem de exceção. Em seguida, o bloco finally é executado, imprimindo a mensagem "Bloco finally executado".
É importante notar que o bloco catch só será executado se a exceção especificada for lançada. Se uma exceção diferente for lançada, o bloco catch não será executado. Por exemplo, se alterássemos nosso código para o seguinte:
try { int[] array = new int[5]; Console.WriteLine(array[5]); } catch (DivideByZeroException e) { Console.WriteLine(e.Message); } finally { Console.WriteLine("Bloco finally executado."); }
Neste caso, uma exceção IndexOutOfRangeException será lançada, pois estamos tentando acessar um índice do array que não existe. No entanto, como nosso bloco catch está apenas capturando exceções DivideByZeroException, essa exceção não será capturada e o programa será interrompido. O bloco finally ainda será executado, no entanto.
Para lidar com diferentes tipos de exceções, podemos ter vários blocos catch. Por exemplo:
try { // código que pode lançar exceções } catch (DivideByZeroException e) { Console.WriteLine("Divide by zero exception: " + e.Message); } catch (IndexOutOfRangeException e) { Console.WriteLine("Index out of range exception: " + e.Message); } finally { Console.WriteLine("Bloco finally executado."); }
Neste caso, se uma exceção DivideByZeroException ou IndexOutOfRangeException for lançada, ela será capturada e tratada adequadamente.
Além disso, podemos ter um bloco catch sem especificar um tipo de exceção. Este bloco catch capturará todas as exceções que não foram capturadas pelos blocos catch anteriores. Por exemplo:
try { // código que pode lançar exceções } catch (DivideByZeroException e) { Console.WriteLine("Divide by zero exception: " + e.Message); } catch (IndexOutOfRangeException e) { Console.WriteLine("Index out of range exception: " + e.Message); } catch (Exception e) { Console.WriteLine("Exceção genérica: " + e.Message); } finally { Console.WriteLine("Bloco finally executado."); }
Neste caso, se uma exceção que não seja DivideByZeroException ou IndexOutOfRangeException for lançada, ela será capturada pelo bloco catch genérico.
Em resumo, a manipulação de exceções é uma parte importante da orientação a objetos em C#, pois permite que lidemos com erros e exceções de maneira controlada, evitando que nosso programa seja interrompido inesperadamente. Ao usar blocos try, catch e finally, podemos garantir que nosso código seja robusto e confiável.
Agora responda o exercício sobre o conteúdo:
Qual é a função do bloco catch na manipulação de exceções em C#?
Você acertou! Parabéns, agora siga para a próxima página
Você errou! Tente novamente.
Próxima página do Ebook Gratuito: