From 0dedb506e199b09f48e61f6d22660c7852bbf69a Mon Sep 17 00:00:00 2001 From: TekH Date: Wed, 14 Jan 2026 09:51:40 +0100 Subject: [PATCH] Handle InsertObjectFailedException in middleware Add specific handling for InsertObjectFailedException in ExceptionHandlingMiddleware, including detailed logging and custom error response. Refactor InsertObjectFailedException to expose the request data via a public property for improved error reporting. --- .../Middleware/ExceptionHandlingMiddleware.cs | 19 ++++++++++++++++++- .../Exceptions/InsertObjectFailedException.cs | 14 +++++++------- 2 files changed, 25 insertions(+), 8 deletions(-) diff --git a/src/ReC.API/Middleware/ExceptionHandlingMiddleware.cs b/src/ReC.API/Middleware/ExceptionHandlingMiddleware.cs index cfac814..60d84e4 100644 --- a/src/ReC.API/Middleware/ExceptionHandlingMiddleware.cs +++ b/src/ReC.API/Middleware/ExceptionHandlingMiddleware.cs @@ -106,6 +106,23 @@ public class ExceptionHandlingMiddleware }; break; + case InsertObjectFailedException insertFailedEx: + logger.LogError( + insertFailedEx, + "Insert operation failed during request processing. {request}", + JsonSerializer.Serialize( + insertFailedEx.Request, + options: new() { WriteIndented = true } + )); + + context.Response.StatusCode = (int)HttpStatusCode.InternalServerError; + details = new() + { + Title = "Insert Operation Failed", + Detail = insertFailedEx.Message + }; + break; + default: logger.LogError(exception, "Unhandled exception occurred."); context.Response.StatusCode = (int)HttpStatusCode.InternalServerError; @@ -120,4 +137,4 @@ public class ExceptionHandlingMiddleware if (details is not null) await context.Response.WriteAsJsonAsync(details); } -} +} \ No newline at end of file diff --git a/src/ReC.Application/Common/Exceptions/InsertObjectFailedException.cs b/src/ReC.Application/Common/Exceptions/InsertObjectFailedException.cs index 0e092a2..00c8a3e 100644 --- a/src/ReC.Application/Common/Exceptions/InsertObjectFailedException.cs +++ b/src/ReC.Application/Common/Exceptions/InsertObjectFailedException.cs @@ -4,20 +4,20 @@ namespace ReC.Application.Common.Exceptions; public class InsertObjectFailedException : Exception { - private readonly InsertObjectProcedure _procedure; + public InsertObjectProcedure Request { get; } - public InsertObjectFailedException(InsertObjectProcedure procedure) : base() + public InsertObjectFailedException(InsertObjectProcedure request) : base() { - _procedure = procedure; + Request = request; } - public InsertObjectFailedException(InsertObjectProcedure procedure, string? message) : base(message) + public InsertObjectFailedException(InsertObjectProcedure request, string? message) : base(message) { - _procedure = procedure; + Request = request; } - public InsertObjectFailedException(InsertObjectProcedure procedure, string? message, Exception? innerException) : base(message, innerException) + public InsertObjectFailedException(InsertObjectProcedure request, string? message, Exception? innerException) : base(message, innerException) { - _procedure = procedure; + Request = request; } } \ No newline at end of file