RSN.SimpleGlobalExceptionHandler
1.0.0
dotnet add package RSN.SimpleGlobalExceptionHandler --version 1.0.0
NuGet\Install-Package RSN.SimpleGlobalExceptionHandler -Version 1.0.0
<PackageReference Include="RSN.SimpleGlobalExceptionHandler" Version="1.0.0" />
paket add RSN.SimpleGlobalExceptionHandler --version 1.0.0
#r "nuget: RSN.SimpleGlobalExceptionHandler, 1.0.0"
// Install RSN.SimpleGlobalExceptionHandler as a Cake Addin #addin nuget:?package=RSN.SimpleGlobalExceptionHandler&version=1.0.0 // Install RSN.SimpleGlobalExceptionHandler as a Cake Tool #tool nuget:?package=RSN.SimpleGlobalExceptionHandler&version=1.0.0
GlobalExceptionHandler
This is a simple global exception handler for Web API applications. It will catch all exceptions and return a JSON response with the exception message.
Usage
Without localization
builder.Services.AddGlobalExceptionHandler(new List<KeyValuePair<string, GlobalExceptionHandler.Models.ErrorDescription>>
{
// Optional. You may add your default descriptions for exceptions here.
new KeyValuePair<string, GlobalExceptionHandler.Models.ErrorDescription> ("Test", new GlobalExceptionHandler.Models.ErrorDescription("Test error", Microsoft.Extensions.Logging.LogLevel.Error, System.Net.HttpStatusCode.Unauthorized) ),
});
With localization
builder.Services.AddGlobalExceptionHandlerWithLocalization(new List<KeyValuePair<string, GlobalExceptionHandler.Models.ErrorDescription>>
{
// Optional. You may add your default descriptions for exceptions here.
new KeyValuePair<string, GlobalExceptionHandler.Models.ErrorDescription> ("Test", new GlobalExceptionHandler.Models.ErrorDescription("Test error", Microsoft.Extensions.Logging.LogLevel.Error, System.Net.HttpStatusCode.Unauthorized) ),
});
In order to use localization with resource file, you must add the following code to your Startup.cs
file:
builder.Services.AddLocalizationProivderWithResourceFile(typeof(Resource), // The type of your resource file
new List<CultureInfo>
[
// Your supported Cultures
]);
Or you can implement your own ILocalizationProvider
and pass it to the AddGlobalExceptionHandlerWithLocalization
method.
You can also use GlobalExceptionHandlers for development environments:
builder.Services.AddGlobalExceptionHandlerForDevelopment(new List<KeyValuePair<string, GlobalExceptionHandler.Models.ErrorDescription>>
{
// Optional. You may add your default descriptions for exceptions here.
new KeyValuePair<string, GlobalExceptionHandler.Models.ErrorDescription> ("Test", new GlobalExceptionHandler.Models.ErrorDescription("Test error", Microsoft.Extensions.Logging.LogLevel.Error, System.Net.HttpStatusCode.Unauthorized) ),
});
Or
builder.Services.AddGlobalExceptionHandlerWithLocalizationForDevelopment(new List<KeyValuePair<string, GlobalExceptionHandler.Models.ErrorDescription>>
{
// Optional. You may add your default descriptions for exceptions here.
new KeyValuePair<string, GlobalExceptionHandler.Models.ErrorDescription> ("Test", new GlobalExceptionHandler.Models.ErrorDescription("Test error", Microsoft.Extensions.Logging.LogLevel.Error, System.Net.HttpStatusCode.Unauthorized) ),
});
This will return the exception message only in development environments.
Also add this code after app.Build()
app.UseExceptionHandler(_ => { });
To throw an exception, you can use the ExpectedException
class:
throw new ExpectedException("Test");
Also you can set the LogLevel
and HttpStatusCode
for each exception:
throw new ExpectedException("Test", Microsoft.Extensions.Logging.LogLevel.Error, System.Net.HttpStatusCode.Unauthorized);
All ExpectedExceptions will be caught by the GlobalExceptionHandler.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
-
net8.0
- Serilog (>= 4.0.1)
- Serilog.AspNetCore (>= 8.0.2)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
1.0.0 | 103 | 9/23/2024 |