Refactor exception handling with new mapping system
Updated `GlobalExceptionHandlerOptions` to use a new `_registeredMappings` dictionary for `HttpExceptionMapping` objects, enhancing flexibility in mapping exceptions to HTTP responses. Renamed `RegisterException` to `Add` to reflect its new functionality. Removed the `HttpResponse` record definition and introduced a new `HttpExceptionMapping` record, which includes a static `Create` method for easier instantiation of mappings.
This commit is contained in:
parent
83ba492b37
commit
9b29a49ad6
@ -1,14 +1,12 @@
|
||||
using System.Net;
|
||||
|
||||
namespace DigitalData.Core.Exceptions.Middleware;
|
||||
namespace DigitalData.Core.Exceptions.Middleware;
|
||||
|
||||
public class GlobalExceptionHandlerOptions
|
||||
{
|
||||
private readonly Dictionary<Type, HttpResponse> _registeredExceptions = new();
|
||||
private readonly Dictionary<Type, HttpExceptionMapping> _registeredMappings = new();
|
||||
|
||||
public GlobalExceptionHandlerOptions RegisterException<TException>(HttpStatusCode statusCode, string? message = null) where TException : Exception
|
||||
public GlobalExceptionHandlerOptions Add(HttpExceptionMapping mapping)
|
||||
{
|
||||
_registeredExceptions[typeof(TException)] = new HttpResponse(statusCode, message);
|
||||
_registeredMappings[mapping.ExceptionType] = mapping;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,9 @@
|
||||
using System.Net;
|
||||
|
||||
namespace DigitalData.Core.Exceptions.Middleware;
|
||||
|
||||
public record HttpExceptionMapping(Type ExceptionType, HttpStatusCode StatusCode, Func<Exception, string>? MessageFactory = null)
|
||||
{
|
||||
public static HttpExceptionMapping Create<TException>(HttpStatusCode statusCode, Func<Exception, string>? messageFactory = null) where TException : Exception
|
||||
=> new HttpExceptionMapping(typeof(TException), statusCode, messageFactory);
|
||||
};
|
||||
@ -1,5 +0,0 @@
|
||||
using System.Net;
|
||||
|
||||
namespace DigitalData.Core.Exceptions.Middleware;
|
||||
|
||||
public record HttpResponse(HttpStatusCode StatusCode, string? Message = null);
|
||||
Loading…
x
Reference in New Issue
Block a user