Crear excepciones en C#

🏠 Programación intermedia 📅 03 Dec 2019 ⏱️ 7 min 💾 Código 💬 0
🎬 Modo vídeo disponible — Ver este contenido junto con su curso, estilo Udemy

Como vimos anteriormente cuando sucede un error en nuestro sistema, tendremos lo que se define como excepción

En este post, veremos una extensión a ese post. En el que crearemos nuestras propias excepciones. 

Los grandes beneficios de tener excepciones personalizas es que nos permite, obviamente controlar nuestro código, y principalmente se usa para monitorizar nuestra página web. 

Para nuestro ejemplo, imaginaremos que tenemos un sistema de facturas, y un usuario intenta acceder a una factura que no es suya. 

 

1 – Crear una excepción personalizada

Para crear una excepción personalizada, únicamente debemos crear una clase que implemente el objeto Exception e indicar un constructor, como vemos en el ejemplo. 

public class FacturaDiferenteClienteException : Exception
{
    public FacturaDiferenteClienteException(string message) : base(message)
    {
        Console.WriteLine(message);
        Util.EnviarEmailAlerta("Intento de hackeo", message);
    }
}

Para simular un sistema he creado una clase Util que contiene un método EnviarEmailAlerta, ya que este ejemplo en concreto es o bien un bug muy gordo o un intento de hackeo.

 

 

2 – Utilizar una excepción personalizada

Para utilizar nuestra excepción que acabamos de crear, debemos instanciarla manualmente, para ello, y para agilizar el ejemplo he creado una clase llamada Repository al que pasamos dos ids, y simplemente devuelve true o false. (el código completo está en github, link abajo)

Vamos al lio, hacemos la llamada, y si nos devuelve falso, es que, en este caso, el cliente y el dueño de la factura no coinciden, con lo que lanzaremos nuestra excepción, como vemos en el siguiente código:

if(!repo.ClienteYFacturaDuenoSonElMismo(clienteId, facturaId))
{
    throw new FacturaDiferenteClienteException($"El cliente {clienteId} esta intentando acceder a la factura {facturaId} que no le corresponde.");
}

 


💬 Comentarios