Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial programming >> Linguagem C

C# - Tratamento de Exceções


Uma exceção é um problema que surge durante a execução de um programa. Uma exceção C# é uma resposta a uma circunstância excepcional que surge enquanto um programa está em execução, como uma tentativa de dividir por zero.

As exceções fornecem uma maneira de transferir o controle de uma parte de um programa para outra. O tratamento de exceção C# é baseado em quatro palavras-chave:try , pegar , finalmente , e lançar .

Sintaxe


Assumindo que um bloco gera uma exceção, um método captura uma exceção usando uma combinação das palavras-chave try e catch. Um bloco try/catch é colocado em torno do código que pode gerar uma exceção. O código dentro de um bloco try/catch é chamado de código protegido, e a sintaxe para usar try/catch se parece com a seguinte −
try {
   // statements causing exception
} catch( ExceptionName e1 ) {
   // error handling code
} catch( ExceptionName e2 ) {
   // error handling code
} catch( ExceptionName eN ) {
   // error handling code
} finally {
   // statements to be executed
}

Você pode listar várias instruções catch para capturar diferentes tipos de exceções caso seu bloco try gere mais de uma exceção em diferentes situações.

Classes de exceção em C#


As exceções do C# são representadas por classes. As classes de exceção em C# são derivadas principalmente direta ou indiretamente do System.Exception classe. Algumas das classes de exceção derivadas da classe System.Exception são a System.ApplicationException e System.SystemException Aulas.

A System.ApplicationException classe suporta exceções geradas por programas aplicativos. Portanto, as exceções definidas pelos programadores devem derivar dessa classe.

A System.SystemException class é a classe base para todas as exceções de sistema predefinidas.

A tabela a seguir fornece algumas das classes de exceção predefinidas derivadas da classe Sytem.SystemException −
Nº Sr. Classe e descrição de exceção
1
System.IO.IOException

Lida com erros de E/S.
2
System.IndexOutOfRangeException

Manipula erros gerados quando um método se refere a um índice de matriz fora do intervalo.
3
System.ArrayTypeMismatchException

Lida com erros gerados quando o tipo é incompatível com o tipo de matriz.
4
System.NullReferenceException

Lida com erros gerados ao referenciar um objeto nulo.
5
System.DivideByZeroException

Lida com erros gerados pela divisão de um dividendo por zero.
6
System.InvalidCastException

Lida com erros gerados durante a conversão de tipos.
7
System.OutOfMemoryException

Lida com erros gerados por memória livre insuficiente.
8
System.StackOverflowException

Lida com erros gerados por estouro de pilha.

Como lidar com exceções


C# fornece uma solução estruturada para o tratamento de exceções na forma de blocos try e catch. Usando esses blocos, as instruções do programa principal são separadas das instruções de tratamento de erros.

Esses blocos de tratamento de erros são implementados usando o try , pegar , e finalmente palavras-chave. A seguir está um exemplo de lançamento de uma exceção quando ocorre a divisão por zero condição -
Demonstração ao vivo
using System;

namespace ErrorHandlingApplication {
   class DivNumbers {
      int result;
      
      DivNumbers() {
         result = 0;
      }
      public void division(int num1, int num2) {
         try {
            result = num1 / num2;
         } catch (DivideByZeroException e) {
            Console.WriteLine("Exception caught: {0}", e);
         } finally {
            Console.WriteLine("Result: {0}", result);
         }
      }
      static void Main(string[] args) {
         DivNumbers d = new DivNumbers();
         d.division(25, 0);
         Console.ReadKey();
      }
   }
}

Quando o código acima é compilado e executado, ele produz o seguinte resultado -
Exception caught: System.DivideByZeroException: Attempted to divide by zero. 
at ...
Result: 0

Criando exceções definidas pelo usuário


Você também pode definir sua própria exceção. As classes de exceção definidas pelo usuário são derivadas da Exception classe. O exemplo a seguir demonstra isso -
Demonstração ao vivo
using System;

namespace UserDefinedException {
   class TestTemperature {
      static void Main(string[] args) {
         Temperature temp = new Temperature();
         try {
            temp.showTemp();
         } catch(TempIsZeroException e) {
            Console.WriteLine("TempIsZeroException: {0}", e.Message);
         }
         Console.ReadKey();
      }
   }
}
public class TempIsZeroException: Exception {
   public TempIsZeroException(string message): base(message) {
   }
}
public class Temperature {
   int temperature = 0;
   
   public void showTemp() {
      
      if(temperature == 0) {
         throw (new TempIsZeroException("Zero Temperature found"));
      } else {
         Console.WriteLine("Temperature: {0}", temperature);
      }
   }
}

Quando o código acima é compilado e executado, ele produz o seguinte resultado -
TempIsZeroException: Zero Temperature found

Atirar objetos


Você pode lançar um objeto se ele for derivado direta ou indiretamente do System.Exception classe. Você pode usar uma instrução throw no bloco catch para lançar o objeto presente como −
Catch(Exception e) {
   ...
   Throw e
}

Linguagem C

  1. C# usando
  2. C Manipulação de Arquivos
  3. Manipulação de Exceções do Python Usando a instrução try, except e finally
  4. Manipulação de Exceções Java
  5. Manipulação de Exceções C++:Try, Catch, Throw Exemplo
  6. Manipulação de exceção do Python:tente, pegue, finalmente e aumente [Exemplo]
  7. Manipulação de sinal C++
  8. Java 9 - Sistema de Módulos
  9. PLC vs DCS
  10. Sistema modular de manuseio de paletes permite produção flexível