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
|
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;
|
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