From d149cbea3a96866b9099f394de4c91afdf990466 Mon Sep 17 00:00:00 2001 From: TekH Date: Fri, 17 Apr 2026 00:34:01 +0200 Subject: [PATCH] Improve error handling in query behaviors for SQL execution Wrap ExecuteScalarAsync in try-catch blocks in BodyQueryBehavior and HeaderQueryBehavior. Throw DataIntegrityException with detailed context if SQL execution fails, aiding in diagnosing malformed or problematic stored SQL queries. --- .../Common/Behaviors/Action/BodyQueryBehavior.cs | 11 ++++++++++- .../Common/Behaviors/Action/HeaderQueryBehavior.cs | 11 ++++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/ReC.Application/Common/Behaviors/Action/BodyQueryBehavior.cs b/src/ReC.Application/Common/Behaviors/Action/BodyQueryBehavior.cs index f739ff0..7d48b0b 100644 --- a/src/ReC.Application/Common/Behaviors/Action/BodyQueryBehavior.cs +++ b/src/ReC.Application/Common/Behaviors/Action/BodyQueryBehavior.cs @@ -31,7 +31,16 @@ public class BodyQueryBehavior(IRecDbContext dbContext) : I await dbContext.Database.OpenConnectionAsync(cancel); try { - var scalar = await command.ExecuteScalarAsync(cancel); + object? scalar; + try + { + scalar = await command.ExecuteScalarAsync(cancel); + } + catch (Exception ex) + { + throw new DataIntegrityException( + $"Body query execution failed. The stored SQL may be malformed. ActionId: {action.Id}, ProfileId: {action.ProfileId}, Error: {ex.Message}"); + } action.Body = scalar as string ?? throw new DataIntegrityException( diff --git a/src/ReC.Application/Common/Behaviors/Action/HeaderQueryBehavior.cs b/src/ReC.Application/Common/Behaviors/Action/HeaderQueryBehavior.cs index 1ff5d57..2c05774 100644 --- a/src/ReC.Application/Common/Behaviors/Action/HeaderQueryBehavior.cs +++ b/src/ReC.Application/Common/Behaviors/Action/HeaderQueryBehavior.cs @@ -32,7 +32,16 @@ public class HeaderQueryBehavior(IRecDbContext dbContext) : await dbContext.Database.OpenConnectionAsync(cancel); try { - var scalar = await command.ExecuteScalarAsync(cancel); + object? scalar; + try + { + scalar = await command.ExecuteScalarAsync(cancel); + } + catch (Exception ex) + { + throw new DataIntegrityException( + $"Header query execution failed. The stored SQL may be malformed. ActionId: {action.Id}, ProfileId: {action.ProfileId}, Error: {ex.Message}"); + } if (scalar is not string rawHeader) throw new DataIntegrityException(