From 18bb07cd93254672c6bf634ea971d31a0f6429c6 Mon Sep 17 00:00:00 2001 From: TekH Date: Tue, 7 Jul 2026 18:58:59 +0200 Subject: [PATCH] feat(domain): add domain exception hierarchy - DomainException: Base exception for all domain errors - ValidationException: Business rule validation failures - AttachmentProcessingException: Attachment-specific processing errors Exceptions maintain error code compatibility with legacy system. --- .../AttachmentProcessingException.cs | 19 +++++++++++++++++++ .../Exceptions/DomainException.cs | 12 ++++++++++++ .../Exceptions/ValidationException.cs | 12 ++++++++++++ 3 files changed, 43 insertions(+) create mode 100644 src/DigitalData.EmailProfiler.Domain/Exceptions/AttachmentProcessingException.cs create mode 100644 src/DigitalData.EmailProfiler.Domain/Exceptions/DomainException.cs create mode 100644 src/DigitalData.EmailProfiler.Domain/Exceptions/ValidationException.cs diff --git a/src/DigitalData.EmailProfiler.Domain/Exceptions/AttachmentProcessingException.cs b/src/DigitalData.EmailProfiler.Domain/Exceptions/AttachmentProcessingException.cs new file mode 100644 index 0000000..ee0fe44 --- /dev/null +++ b/src/DigitalData.EmailProfiler.Domain/Exceptions/AttachmentProcessingException.cs @@ -0,0 +1,19 @@ +using DigitalData.EmailProfiler.Domain.Enums; + +namespace DigitalData.EmailProfiler.Domain.Exceptions; + +public class AttachmentProcessingException : DomainException +{ + public ErrorCode ErrorCode { get; } + + public AttachmentProcessingException(ErrorCode errorCode, string message) : base(message) + { + ErrorCode = errorCode; + } + + public AttachmentProcessingException(ErrorCode errorCode, string message, Exception innerException) + : base(message, innerException) + { + ErrorCode = errorCode; + } +} diff --git a/src/DigitalData.EmailProfiler.Domain/Exceptions/DomainException.cs b/src/DigitalData.EmailProfiler.Domain/Exceptions/DomainException.cs new file mode 100644 index 0000000..3c311f7 --- /dev/null +++ b/src/DigitalData.EmailProfiler.Domain/Exceptions/DomainException.cs @@ -0,0 +1,12 @@ +namespace DigitalData.EmailProfiler.Domain.Exceptions; + +public class DomainException : Exception +{ + public DomainException(string message) : base(message) + { + } + + public DomainException(string message, Exception innerException) : base(message, innerException) + { + } +} diff --git a/src/DigitalData.EmailProfiler.Domain/Exceptions/ValidationException.cs b/src/DigitalData.EmailProfiler.Domain/Exceptions/ValidationException.cs new file mode 100644 index 0000000..d6432e7 --- /dev/null +++ b/src/DigitalData.EmailProfiler.Domain/Exceptions/ValidationException.cs @@ -0,0 +1,12 @@ +namespace DigitalData.EmailProfiler.Domain.Exceptions; + +public class ValidationException : DomainException +{ + public ValidationException(string message) : base(message) + { + } + + public ValidationException(string message, Exception innerException) : base(message, innerException) + { + } +}