Lanzar una excepción personalizada sin la clase de excepción en C#

Muhammad Zeeshan 12 octubre 2023
  1. Excepciones en C#
  2. Lanzar una excepción personalizada sin la clase de excepción en C#
Lanzar una excepción personalizada sin la clase de excepción en C#

Este tutorial le enseñará a generar una excepción personalizada en C# sin utilizar la clase Excepción. Primero, hablemos sobre el concepto de excepción.

Excepciones en C#

Un programa puede encontrar una excepción en cualquier momento durante la ejecución. Una definición común de un error es una ocurrencia que causa angustia pero no se esperaba.

Sin embargo, por varias razones, las excepciones dentro del código de una aplicación son parte del curso. El manejo de excepciones es el uso de las aplicaciones lógicas para manejar las excepciones siempre que surjan explícitamente.

Se puede justificar una excepción en una variedad de situaciones. Este error puede ser causado por varias cosas diferentes, incluida la conocida NullReferenceException y un tiempo de espera de consulta de la base de datos.

Lanzar una excepción personalizada sin la clase de excepción en C#

Las excepciones personalizadas son útiles si desea capturar y procesar un tipo de excepción específico. También pueden ayudarlo a rastrear excepciones críticas.

Un tipo de excepción único ayuda a una herramienta de supervisión de errores a realizar un seguimiento de los problemas y registros de la aplicación.

Ejemplo

En el siguiente ejemplo, crearemos la clase EmployeeNotFoundException en una aplicación, que verificará al empleado. Lanzará una excepción si no está presente en la matriz de empleados.

Para comenzar, tenemos que importar las siguientes bibliotecas:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

En primer lugar, crearemos una clase MyEmployee que contendrá la identificación y el nombre del empleado.

class MyEmployee {
  public int empid { get; set; }
  public string empname { get; set; }
}

Ahora, crearemos una excepción de tipo EmployeeNotFoundException. Se lanzará si no se encuentra un empleado en la matriz de empleados:

class EmployeeNotFoundException : Exception {
  public EmployeeNotFoundException(string employeename)
      : base(String.Format("Employee Not Found: {0}", employeename)) {}
}

En el método Main(), crearemos dos objetos MyEmployee llamados:

MyEmployee emp1 = null;
MyEmployee emp2 = null;

Completaremos emp1.empname y emp2.empname con el nombre del empleado y pasaremos los objetos al método CheckEmployee para verificar si el empleado existe en la lista o no:

try {
  emp1 = new MyEmployee();
  emp1.empname = "Muhammad Zeeshan";
  CheckEmployee(emp1);

  emp2 = new MyEmployee();
  emp2.empname = "Hermes Fang";
  CheckEmployee(emp2);
}

Si el empleado no existe en la matriz, lanzará una excepción EmployeeNotFoundException.

catch (EmployeeNotFoundException ex) {
  Console.WriteLine(ex.Message);
}

Por último, crearemos la función CheckEmployee(), que validará al empleado con la ayuda de .contains(), como se muestra a continuación:

public static void CheckEmployee(MyEmployee e) {
  string[] arr = { "Muhammad Zeeshan", "Ali Khan", "Saad Jaan" };
  if (!arr.Contains(e.empname))
    throw new EmployeeNotFoundException(e.empname);
}

Código fuente completo:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CustomxceptionbyZeeshan {
  class MyEmployee {
    public int empid { get; set; }
    public string empname { get; set; }
  }
  class EmployeeNotFoundException : Exception {
    public EmployeeNotFoundException(string employeename)
        : base(String.Format("Employee Not Found: {0}", employeename)) {}
  }
  class Program {
    static void Main(string[] args) {
      MyEmployee emp1 = null;
      MyEmployee emp2 = null;
      try {
        emp1 = new MyEmployee();
        emp1.empname = "Muhammad Zeeshan";
        CheckEmployee(emp1);

        emp2 = new MyEmployee();
        emp2.empname = "Hermes Fang";
        CheckEmployee(emp2);
      } catch (EmployeeNotFoundException ex) {
        Console.WriteLine(ex.Message);
      }
      Console.ReadKey();
    }

    public static void CheckEmployee(MyEmployee e) {
      string[] arr = { "Muhammad Zeeshan", "Ali Khan", "Saad Jaan" };
      if (!arr.Contains(e.empname))
        throw new EmployeeNotFoundException(e.empname);
    }
  }
}

Producción :

Employee Not Found: Hermes Fang
Muhammad Zeeshan avatar Muhammad Zeeshan avatar

I have been working as a Flutter app developer for a year now. Firebase and SQLite have been crucial in the development of my android apps. I have experience with C#, Windows Form Based C#, C, Java, PHP on WampServer, and HTML/CSS on MYSQL, and I have authored articles on their theory and issue solving. I'm a senior in an undergraduate program for a bachelor's degree in Information Technology.

LinkedIn

Artículo relacionado - Csharp Exception