ImprovedExceptionHandeling 1.0.0
dotnet add package ImprovedExceptionHandeling --version 1.0.0
NuGet\Install-Package ImprovedExceptionHandeling -Version 1.0.0
<PackageReference Include="ImprovedExceptionHandeling" Version="1.0.0" />
<PackageVersion Include="ImprovedExceptionHandeling" Version="1.0.0" />
<PackageReference Include="ImprovedExceptionHandeling" />
paket add ImprovedExceptionHandeling --version 1.0.0
#r "nuget: ImprovedExceptionHandeling, 1.0.0"
#:package ImprovedExceptionHandeling@1.0.0
#addin nuget:?package=ImprovedExceptionHandeling&version=1.0.0
#tool nuget:?package=ImprovedExceptionHandeling&version=1.0.0
Improved Exception Handling for C#
Overview
The aim of this project is to streamline and simplify the approach to exception handling in C#. This repository contains extensions and utility methods to enhance the readability, maintainability, and robustness of your exception handling code.
Key Features
Throwing Extensions: Simplify and standardize the way exceptions are thrown based on null checks and predicate evaluations.
- ThrowArgumentNullExceptionIfNull: Throws an
ArgumentNullException
if the value is null. - ThrowArgumentExceptionIfNullOr: Throws an
ArgumentException
if the value is null or does not meet a specified condition. - ThrowArgumentExceptionIf: Throws an
ArgumentException
if the value does not meet a specified condition. - ThrowIf: Throws a custom exception if the value does not meet a specified condition.
- ThrowArgumentNullExceptionIfNull: Throws an
Exception Extensions: Enhance exceptions by adding custom data in a structured and reusable way.
- AddData (Single Pair): Adds a single key-value pair to the exception's data.
- AddData (Multiple Pairs): Adds multiple key-value pairs to the exception's data.
Uses System.Text.Json to Serialize data objects.
Example Usage
Throwing Extensions
string name = null;
name.ThrowArgumentNullExceptionIfNull(); // Throws ArgumentNullException if name is null.
int age = -1;
age.ThrowArgumentExceptionIf(x => x < 0); // Throws ArgumentException if age is less than 0.
string email = "example@domain.com";
email.ThrowArgumentExceptionIfNullOr(x => !x.Contains("@")); // Throws ArgumentException if email is null or does not contain '@'.
var p = new Person(Age:0);
p.ThrowIf(expression: x => x.Age < 1, factory: () => new ArgumentNullException("This is my CustomText"));
Exception Extensions
try
{
string data = null;
data.ThrowArgumentNullExceptionIfNull(); // This will throw an ArgumentNullException.
}
catch (ArgumentNullException ex)
{
ex.AddData("AdditionalInfo", "This occurred in method X.");
throw; // Re-throw the exception with additional data.
}
Other Example
string data = null ?? throw new ArgumentNullException().AddData("SomeData", "Example");
Getting Started
Clone the repository:
bash
git clone url
Add the project to your solution and reference it in your project. Use the provided extension methods to enhance your exception handling logic.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. 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. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- System.Text.Json (>= 8.0.3)
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 | 132 | 7/4/2024 |