Eiding.ExceptionManager 0.4.0

dotnet add package Eiding.ExceptionManager --version 0.4.0
NuGet\Install-Package Eiding.ExceptionManager -Version 0.4.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Eiding.ExceptionManager" Version="0.4.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Eiding.ExceptionManager --version 0.4.0
#r "nuget: Eiding.ExceptionManager, 0.4.0"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Eiding.ExceptionManager as a Cake Addin
#addin nuget:?package=Eiding.ExceptionManager&version=0.4.0

// Install Eiding.ExceptionManager as a Cake Tool
#tool nuget:?package=Eiding.ExceptionManager&version=0.4.0

ExceptionManager for ASP .NET Core API

Project is in developement

  1. How to use
  2. Exceptions 2.1. How to use 2.2 Custom exceptions
  3. Custom exception messages 3.1. How to use 3.2 Custom exception messages

1. How to use

Add reference to ExeptionManager in Program.cs

using Eiding.ExeptionManager;

Paste below code snippet under builder or in ConfigureServices method (depends on your .NET version)

builder.Services.AddControllersWithViews(options ⇒ options.Filters.Add< ExceptionFilter>();

public void ConfigureServices(IServiceCollection services) { services.AddControllersWithViews(options ⇒ options.Filters.Add< ExceptionFilter>(); }

Use custom exceptions from ExceptionManager ( or crete you own )

2. Exceptions

Every exception must inherit from Exception, and Eiding.ExeptionManager. IExceptionProvider

You can find exceptions there: using Eiding.ExceptionManager.Exceptions;

2.1. How to use

You have three different ways to use exceptions:

2.1.1 Classic way
throw new Exception("Error message);
2.1.2 Static methods ( every exception has its own methods )
Exception.Throw("Error message);
2.1.3 StatusCodeManager

Import manager from:

using Eiding.ExceptionManager.Managers;

Type StatusCodeManager. and choose which StatusCode you need (sc*)

StatusCodeManager.sc400.

Now you have access to every method from custom exception that represents StatusCode that you've choosed

StatusCodeManager.sc400.Throw("test");

2.2. Custom exceptions

2.2.1 InvalidArgumentException ( 400 )

Inherit from: ArgumentException, IExceptionProvider
Constructor
InvalidArgumentException(string? message = "Parameter is invalid.", string? paramName = null)
Methods

If message in any method is null, exception throws with default message "Parameter is invalid."

Throw()
Throws an InvalidArgumentException.
Throw(string? message = null, string? paramName = null)
IfNull()
Throws an InvalidArgumentException if argument is null.
IfNull(object? argument, string? message = null, string? paramName = null)
Throws an InvalidArgumentException if argument is null or empty string.
IfNull(string? argument, string? message = null, string? paramName = null)
Throws an InvalidArgumentException if argument is null or it's a list of null objects.
IfNull(IEnumerable<object?>? argument, string? message = null, string? paramName = null)
IfTrue()
Throws an InvalidArgumentException if condition it true.
IfTrue(bool conditions, string? message = null, string? paramName = null)
IfZero()
Throws an InvalidArgumentException if number equals 0.
IfZero(int number, string? message = null, string? paramName = null)
Throws an InvalidArgumentException if number equals 0d.
IfZero(double number, string? message = null, string? paramName = null)
Throws an InvalidArgumentException if number equals 0f.
IfZero(float number, string? message = null, string? paramName = null)
IfSmallerThanZero()
Throws an InvalidArgumentException if number is smaller than 0.
IfSmallerThanZero(int number, string? message = null, string? paramName = null)
Throws an InvalidArgumentException if number is smaller than 0d.
IfSmallerThanZero(double number, string? message = null, string? paramName = null)
Throws an InvalidArgumentException if number is smaller than 0f.
IfSmallerThanZero(float number, string? message = null, string? paramName = null)
IfNotOnlyDigits()
Throws an InvalidArgumentException if argument does not have only digits.
IfNotOnylDigits(string? argument, string? message = null, string? paramName = null)
IfNotOnlyLettersOrDigits()
Throws an InvalidArgumentException if argument does not have only letters or digits.
IfNotOnlyLettersOrDigits(string? argument, string? message = null, string? paramName = null)
IfNotLowercase()
Throws an InvalidArgumentException if argument is not in lowercase.
IfNotLowercase(string? argument, string? message = null, string? paramName = null)
IfNotOnlyLetters()
Throws an InvalidArgumentException if argument is not in uppercase.
IfNotOnlyLetters(string? argument, string? message = null, string? paramName = null)
IfNotUppercase()
Throws an InvalidArgumentException if argument does not have only letters.
IfNotUppercase(string? argument, string? message = null, string? paramName = null)

2.2.2 ObjectNotFoundException ( 404 )

Inherit from: Exception, IExceptionProvider
Constructor
ObjectNotFoundException(string message = "Object was not found.")
Methods

If message in any method is null, exception throws with default message "Object was not found."

Throw()
Throws an ObjectNotFoundException.
Throw(string? message = null)
IfNull()
Throws an ObjectNotFoundException if argument is null.
IfNull(object? argument, string? message = null)
Throws an ObjectNotFoundException if argument is null or empty string.
IfNull(string? argument, string? message = null)
Throws an ObjectNotFoundException if argument is null or it's a list of null objects.
IfNull(IEnumerable<object?>? argument, string? message = null)
IfTrue()
Throws an ObjectNotFoundException if condition it true.
IfTrue(bool conditions, string? message = null)

2.2.3 DuplicatedArgumentException ( 409 )

Inherit from: Exception, IExceptionProvider
Constructor
DuplicatedArgumentException(string message = "Parameter is duplicated.")
Methods

If message in any method is null, exception throws with default message "Parameter is duplicated."

Throw()
Throws an ObjectNotFoundException.
Throw(string? message = null)
IfTrue()
Throws an ObjectNotFoundException if condition it true.
IfTrue(bool conditions, string? message = null)
AreEqual()
Throws an DuplicateArgumentException if argument is not equal to expectation, using ==.
AreEqual(object? argument, object? expectation, string? message = null, string? paramName = null)
AreEqualStrict()
Throws an DuplicateArgumentException if argument is not equal to expectation, using Equals().
AreEqualStrict(object? argument, object? expectation, string? message = null, string? paramName = null)
AreEqualTypes()
Throws an DuplicateArgumentException if argument type is not equal to expectation type.
AreEqualTypes(object? argument, object? expectation, string? message = null, string? paramName = null)

3. Custom exception messages

(almost)Every exception message has default value.

3.1 How to use

Import messages from:

using Eiding.ExceptionManager.Messages;

Type <b>ExceptionMessages.</b> and choose which message you want to use

throw new Exception(ExceptionMessages.NotFound());

2.1 Custom exceptions

NotFound()
{ what } was not found.
NotFound(string what = "Object")
NotFoundWithId()
{ what } with id { id } was not found. ⇒ If { id } is null.
{ what } was not found. ⇒ If { id } is not null.
NotFoundWithId(string what = "Object", string id = null)
NotFoundWith()
{ what } with identifier: { identifier } value: { value } was not found.
Invalid()
{ what } is invalid ⇒ If { parameterName } is null.
{ what } is invalid. Parameter: { parameterName } ⇒ If { parameterName } is not null
Invalid(string what = "Parameter", string parameterName = null)
NotEmptyBody()
A non-empty request body is required.
NotEmptyBody()
NotNull()
{ what } can not be null.
NotNull(string what = "Object")
NotEmpty()
{ what } must not be empty.
NotEmpty(string what = "Object")
Empty()
{ what } must be empty.
Empty(string what = "Object")
MustBeBetween()
{ what } must be between { min } and { min }.
MustBeBetween(string what = "Number", string min = "0", string max = "2147483647")
ConditionNotMet()
The specified condition was not met for { what }.
ConditionNotMet(string what = "this argument")
NotISO8601()
{ what } is not in format ISO 8601.
NotISO8601(string what = "Date")
OnlyDigits()
{ what } must have only digits.
OnlyDigits(string what = "Value")
OnlyLetters()
{ what } must have only letters.
OnlyLetters(string what = "Value")
GreaterThanZero()
{ what } must be greater than 0.
GreaterThanZero(string what = "Value")
IsBefore()
{ what } is before { beforeWhat }.
IsBefore(string what = "Value", string beforeWhat = "last value")
IsAfter()
{ what } is after { afterWhat }.
IsAfter(string what = "Value", string afterWhat = "last value")
NotMatch()
{ what } does not match { toMatch }.
NotMatch(string what = "Value", string toMatch = "expected value")
DateInFuture()
{ what } is not allowed to be in future.
DateInFuture(string what = "Date")
TooLong()
{ what } are too long. ⇒ If { plural } is true.
{ what } is too long. ⇒ If { plural } is false.
TooLong(string what = "Value", bool plural = false)
Duplicated()
{ what } is duplicated.
Duplicated(string what = "Parameter")
DuplicatedWith()
{ what } with { with } already exists.
DuplicatedWith(string what = "Record", string with = "this value")
NotDistinct()
{ what } contains the same { value } multiple times.
NotDistinct(string what = "List", string value = "value")
NotAllowed()
{ who } { plural(true/false) } (are/is) not allowed to { action } { what }.
NotAllowed(string who = "You", bool plural = false, string action = "modify", string what = "this value")
Product Compatible and additional computed target framework versions.
.NET net5.0 is compatible.  net5.0-windows was computed.  net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  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. 
.NET Core netcoreapp3.1 is compatible. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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
0.4.0 434 5/3/2022
0.3.1 389 5/2/2022
0.3.0 377 5/1/2022
0.2.0 400 5/1/2022
0.1.0 458 4/30/2022

Added almost every client side exception with default methods