Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> Lenguaje C

C# - Manejo de excepciones

Una excepción es un problema que surge durante la ejecución de un programa. Una excepción de C# es una respuesta a una circunstancia excepcional que surge mientras se ejecuta un programa, como un intento de dividir por cero.

Las excepciones proporcionan una forma de transferir el control de una parte de un programa a otra. El manejo de excepciones de C# se basa en cuatro palabras clave:intentar , atrapar , finalmente y lanzar .

Sintaxis

Suponiendo que un bloque genera una excepción, un método detecta una excepción mediante una combinación de las palabras clave try y catch. Se coloca un bloque try/catch alrededor del código que podría generar una excepción. El código dentro de un bloque try/catch se conoce como código protegido, y la sintaxis para usar try/catch es similar a la siguiente:

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
}

Puede enumerar varias declaraciones de captura para detectar diferentes tipos de excepciones en caso de que su bloque de prueba genere más de una excepción en diferentes situaciones.

Clases de excepción en C#

Las excepciones de C# están representadas por clases. Las clases de excepción en C# se derivan principalmente directa o indirectamente de System.Exception clase. Algunas de las clases de excepción derivadas de la clase System.Exception son System.ApplicationException y System.SystemException clases.

La excepción System.ApplicationException La clase admite excepciones generadas por programas de aplicación. Por lo tanto, las excepciones definidas por los programadores deben derivar de esta clase.

La excepción System.SystemException class es la clase base para todas las excepciones del sistema predefinidas.

La siguiente tabla proporciona algunas de las clases de excepción predefinidas derivadas de la clase Sytem.SystemException −

Sr.No. Clase de excepción y descripción
1

System.IO.IOException

Maneja errores de E/S.

2

System.IndexOutOfRangeException

Maneja los errores generados cuando un método se refiere a un índice de matriz fuera de rango.

3

System.ArrayTypeMismatchException

Maneja los errores generados cuando el tipo no coincide con el tipo de matriz.

4

System.NullReferenceException

Maneja los errores generados al hacer referencia a un objeto nulo.

5

System.DivideByZeroException

Maneja los errores generados al dividir un dividendo con cero.

6

System.InvalidCastException

Maneja los errores generados durante el encasillamiento.

7

Excepción System.OutOfMemory

Maneja errores generados por memoria libre insuficiente.

8

Excepción System.StackOverflow

Maneja los errores generados por el desbordamiento de pila.

Manejo de excepciones

C# proporciona una solución estructurada para el manejo de excepciones en forma de bloques de prueba y captura. Al usar estos bloques, las declaraciones del programa principal se separan de las declaraciones de manejo de errores.

Estos bloques de manejo de errores se implementan usando el método try , atrapar y finalmente palabras clave El siguiente es un ejemplo de lanzar una excepción cuando se produce la condición de dividir por cero −

Demostración en 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();
      }
   }
}

Cuando el código anterior se compila y ejecuta, produce el siguiente resultado −

Exception caught: System.DivideByZeroException: Attempted to divide by zero. 
at ...
Result: 0

Creación de excepciones definidas por el usuario

También puede definir su propia excepción. Las clases de excepción definidas por el usuario se derivan de la Excepción clase. El siguiente ejemplo demuestra esto −

Demostración en 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);
      }
   }
}

Cuando el código anterior se compila y ejecuta, produce el siguiente resultado −

TempIsZeroException: Zero Temperature found

Lanzamiento de objetos

Puede lanzar un objeto si se deriva directa o indirectamente de System.Exception clase. Puede usar una instrucción throw en el bloque catch para lanzar el objeto presente como −

Catch(Exception e) {
   ...
   Throw e
}

Lenguaje C

  1. C # usando
  2. Manejo de archivos C
  3. Manejo de excepciones de Python Uso de la instrucción try, except y finalmente
  4. Manejo de excepciones de Java
  5. Manejo de excepciones de C++:ejemplo Try, Catch, throw
  6. Manejo de excepciones de Python:probar, atrapar, finalmente y aumentar [Ejemplo]
  7. Manejo de señales C++
  8. Java 9 - Sistema de módulos
  9. PLC frente a DCS
  10. El sistema modular de manipulación de tarimas permite una producción flexible
  11. El sistema de manejo de tarimas se expande para respaldar los cambios de producción