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

Manejo de excepciones en C#: Estrategias y mejores prácticas

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

Las excepciones proporcionan una forma de transferir control de una parte del programa a otra. El manejo de excepciones en C# se basa en cuatro palabras clave: try, catch, finally y throw.

Sintaxis

Suponiendo que un bloque lanza una excepción, un método la captura usando try y catch:

try {
    // sentencias que causan excepción
} catch (ExceptionName e1) {
    // código de manejo de error
} catch (ExceptionName e2) {
    // código de manejo de error
} catch (ExceptionName eN) {
    // código de manejo de error
} finally {
    // sentencias a ejecutar
}

Puede listar múltiples bloques catch para capturar diferentes tipos de excepciones.

Clases de excepciones en C#

Las excepciones en C# están representadas por clases, derivadas directa o indirectamente de System.Exception. Algunas clases derivadas son System.ApplicationException y System.SystemException.

Excepciones predefinidas derivadas de System.SystemException:

Nº Clase de excepción y descripción
1System.IO.IOException: Maneja errores de E/S.
2System.IndexOutOfRangeException: Errores al referenciar índice de array fuera de rango.
3System.ArrayTypeMismatchException: Errores por tipo incompatible con el tipo de array.
4System.NullReferenceException: Errores al referenciar un objeto null.
5System.DivideByZeroException: Errores al dividir entre cero.
6System.InvalidCastException: Errores durante conversión de tipos (casting).
7System.OutOfMemoryException: Errores por memoria libre insuficiente.
8System.StackOverflowException: Errores por desbordamiento de pila.

Manejo de excepciones

C# proporciona una solución estructurada con bloques try y catch, separando el código principal del manejo de errores.

Ejemplo: División por cero

using System;
namespace AplicaciónManejoErrores {
    class DivNúmeros {
        int resultado;
        
        DivNúmeros() { resultado = 0; }
        
        public void División(int num1, int num2) {
            try {
                resultado = num1 / num2;
            } catch (DivideByZeroException e) {
                Console.WriteLine("Excepción capturada: {0}", e);
            } finally {
                Console.WriteLine("Resultado: {0}", resultado);
            }
        }
        
        static void Main(string[] args) {
            DivNúmeros d = new DivNúmeros();
            d.División(25, 0);
            Console.ReadKey();
        }
    }
}

Resultado:

Excepción capturada: System.DivideByZeroException: Attempted to divide by zero.
Resultado: 0

Creación de excepciones definidas por el usuario

Puede definir sus propias excepciones. Las clases de excepción definidas por el usuario derivan de la clase Exception.

Ejemplo:

using System;
namespace ExcepciónDefinidaUsuario {
    class TestTemperatura {
        static void Main(string[] args) {
            Temperatura temp = new Temperatura();
            try {
                temp.MostrarTemp();
            } catch (TempEsCeroException e) {
                Console.WriteLine("TempEsCeroException: {0}", e.Message);
            }
            Console.ReadKey();
        }
    }
}

public class TempEsCeroException : Exception {
    public TempEsCeroException(string message) : base(message) { }
}

public class Temperatura {
    int temperatura = 0;
    
    public void MostrarTemp() {
        if (temperatura == 0) {
            throw (new TempEsCeroException("Temperatura cero encontrada"));
        } else {
            Console.WriteLine("Temperatura: {0}", temperatura);
        }
    }
}

Resultado:

TempEsCeroException: Temperatura cero encontrada

Lanzamiento de objetos

Puede lanzar un objeto si deriva directa o indirectamente de System.Exception. Use throw en el bloque catch para relanzar la excepción actual:

catch (Exception e) {
    ...
    throw e;
}

Lenguaje C

  1. PLC vs DCS: eligiendo el sistema de automatización adecuado
  2. Liebherr PHS Allround: manejo de pallets flexible y modular para producción de alta capacidad
  3. Liebherr amplía sistema de manejo de pallets PHS Allround para producción flexible
  4. Dominando las Sentencias Using en C#: Importaciones, Alias y Directivas Estáticas
  5. Manejo de archivos en C: Dominando E/S con fopen, fprintf, fread y fseek
  6. Manejo de excepciones en C++: Guía práctica con try, catch, throw
  7. Dominar el manejo de señales en C++: Gestión segura de interrupciones y terminación limpia del programa
  8. Dominando el Manejo de Excepciones en Python: try, except, else y finally Explicados
  9. Dominando el manejo de excepciones en Python: try, except, finally y raise efectivamente
  10. Dominando el manejo de excepciones en Java: Try, Catch, Finally, Throw y Throws explicados
  11. Sistema de Módulos Java 9: Mejoras, Link-Time e Imágenes de Runtime Personalizadas