Refactored `JobException` and derived classes (`InactiveProfileException`, `JobHttpException`, `JobSqlException`) to include `profileId` as a required parameter in their constructors. This ensures consistent context for exceptions related to job execution. Updated behaviors (`CheckQueryExecutionBehavior`, `MainQueryExecutionBehavior`, `ReCRequestExecutionBehavior`) to use the new constructors, passing `profileId` where applicable. Improved exception messages for better debugging context. Simplified property initialization and enhanced XML documentation for clarity.
42 lines
2.2 KiB
C#
42 lines
2.2 KiB
C#
using System;
|
|
|
|
namespace ECMJobRunner.Application.Common.Exceptions
|
|
{
|
|
/// <summary>
|
|
/// Exception for HTTP client-related job failures (e.g., ReC API calls, REST requests)
|
|
/// Extends JobException with client library and method context
|
|
/// </summary>
|
|
/// <remarks>
|
|
/// Initializes a new instance of JobHttpException with HTTP client context
|
|
/// </remarks>
|
|
/// <param name="profileId">Identifier of the profile associated with the job</param>
|
|
/// <param name="jobName">Name of the job that failed (e.g., "ReC Request", "API Call")</param>
|
|
/// <param name="processName">Name of the process/stage being executed</param>
|
|
/// <param name="batchId">Unique batch identifier for tracking</param>
|
|
/// <param name="reason">Human-readable reason for the failure (nullable)</param>
|
|
/// <param name="clientLibrary">Name of the HTTP client library used (e.g., "ReC.Client", "HttpClient") (nullable)</param>
|
|
/// <param name="clientMethod">Name of the client method that failed (e.g., "ExecuteAsync", "PostAsync") (nullable)</param>
|
|
/// <param name="innerException">The underlying exception that caused the failure (nullable)</param>
|
|
/// <remarks>
|
|
/// Use this exception for HTTP-related failures such as:
|
|
/// - ReC API request failures
|
|
/// - REST API communication errors
|
|
/// - HTTP client timeout/network issues
|
|
/// - Authentication/authorization failures
|
|
/// </remarks>
|
|
public class JobHttpException(long profileId, string jobName, string processName, string batchId, string? reason, string? clientLibrary, string? clientMethod, Exception? innerException)
|
|
: JobException(profileId, jobName, processName, batchId, reason, innerException, ("Client Library", clientLibrary, true), ("Client Method", clientMethod, true))
|
|
{
|
|
|
|
/// <summary>
|
|
/// Gets the name of the HTTP client library that was used (e.g., "ReC.Client", "HttpClient")
|
|
/// </summary>
|
|
public string? ClientLibrary { get; } = clientLibrary;
|
|
|
|
/// <summary>
|
|
/// Gets the name of the client method that failed (e.g., "ExecuteAsync", "PostAsync")
|
|
/// </summary>
|
|
public string? ClientMethod { get; } = clientMethod;
|
|
}
|
|
}
|