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.");
}