Errors
La gestión de errores es un aspecto crucial en el desarrollo de software, ya que permite manejar situaciones excepcionales de manera controlada y predecible. En esta sección, exploraremos cómo se estructuran los códigos de error en la librería CodeDesignPlus.Net.Core
, organizándolos en niveles que corresponden a diferentes capas de la aplicación. Esta organización facilita el diagnóstico y la solución de problemas en sistemas complejos.
Niveles de Códigos de Error
Los códigos de error se agrupan en tres niveles, cada uno correspondiente a una capa específica en la arquitectura hexagonal:
-
Capa de Dominio (1xx):
- Códigos que reflejan problemas relacionados con las reglas de negocio y la lógica del dominio. Se utilizan para validar invariantes del dominio y manejar condiciones que no cumplen con las expectativas del modelo.
-
Capa de Aplicación (2xx):
- Códigos que se relacionan con la lógica de la aplicación, incluyendo la validación de datos y la interacción entre las diferentes partes de la aplicación.
-
Capa de Infraestructura (3xx):
- Códigos que reflejan problemas en la infraestructura subyacente, como fallos en la base de datos, problemas de red o fallos de servicio.
Abstracción de Errores
La interfaz IErrorCodes
se define como sigue:
namespace CodeDesignPlus.Net.Core.Abstractions;
/// <summary>/// Interface that represents the error codes of the application./// </summary>public interface IErrorCodes{
}
Ejemplo Práctico
Para ilustrar cómo se estructuran los códigos de error en la librería CodeDesignPlus.Net.Core
, veamos un ejemplo de implementación de la interfaz IErrorCodes
:
using CodeDesignPlus.Net.Core.Abstractions;
namespace CodeDesignPlus.Net.Core.Sample.Resources.Errors;
public class Errors : IErrorCodes{ public const string UnknownError = "000 : Unknown error."; public const string IdOrderIsInvalid = "100 : Id is invalid."; public const string TenantIsInvalid = "101 : Tenant is invalid."; public const string ClientIsNull = "102 : Client is null."; public const string IdClientIsInvalid = "103 : Id client is invalid."; public const string NameClientIsInvalid = "104 : Name client is invalid."; public const string ProductIsNull = "105 : Product is null."; public const string IdProductIsInvalid = "106 : Id product is invalid."; public const string NameProductIsInvalid = "107 : Name product is invalid."; public const string PriceProductIsInvalid = "108 : Price product is invalid."; public const string QuantityProductIsInvalid = "109 : Quantity product is invalid."; public const string ProductNotFound = "110 : Product not found in the order."; public const string OrderAlreadyCompleted = "111 : Order already completed."; public const string OrderAlreadyCancelled = "112 : Order already cancelled.";}
Uso de Códigos de Error
Estos códigos de error son especialmente útiles en las cláusulas de guardia y en la validación de invariantes del dominio. Por ejemplo, podrías utilizarlos en un método de creación de pedido para verificar que el Id
del pedido es válido:
public void CreateOrder(Guid orderId, Guid tenantId){ if (orderId == Guid.Empty) { throw new CodeDesignPlusException(Errors.IdOrderIsInvalid); }
if (tenantId == Guid.Empty) { throw new CodeDesignPlusException(Errors.TenantIsInvalid); }
// Lógica para crear el pedido...}
Conclusiones
La gestión de errores es fundamental para mantener la robustez y la mantenibilidad de una aplicación. Al estructurar los códigos de error en niveles que corresponden a diferentes capas de la arquitectura hexagonal, puedes facilitar el diagnóstico de problemas y mejorar la calidad del software. Los códigos de error definidos en la librería CodeDesignPlus.Net.Core
son una herramienta poderosa que te permite manejar excepciones de manera eficaz y alineada con las expectativas del dominio.
Si deseas profundizar más en la gestión de errores o explorar otros aspectos de la arquitectura hexagonal, no dudes en contactarnos. ¡Estamos aquí para ayudarte!