Crear excepciones en C#

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

 


Uso del bloqueador de anuncios adblock

Hola!

Primero de todo bienvenido a la web de NetMentor donde podrás aprender programación en C# y .NET desde un nivel de principiante hasta más avanzado.


Yo entiendo que utilices un bloqueador de anuncios como AdBlock, Ublock o el propio navegador Brave. Pero te tengo que pedir por favor que desactives el bloqueador para esta web.


Intento personalmente no poner mucha publicidad, la justa para pagar el servidor y por supuesto que no sea intrusiva; Si pese a ello piensas que es intrusiva siempre me puedes escribir por privado o por Twitter a @NetMentorTW.


Si ya lo has desactivado, por favor recarga la página.


Un saludo y muchas gracias por tu colaboración

© copyright 2024 NetMentor | Todos los derechos reservados | RSS Feed

Buy me a coffee Invitame a un café