RA.Utilities.Core.Exceptions 10.0.0-rc.2

Prefix Reserved
This is a prerelease version of RA.Utilities.Core.Exceptions.
There is a newer version of this package available.
See the version list below for details.
dotnet add package RA.Utilities.Core.Exceptions --version 10.0.0-rc.2
                    
NuGet\Install-Package RA.Utilities.Core.Exceptions -Version 10.0.0-rc.2
                    
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="RA.Utilities.Core.Exceptions" Version="10.0.0-rc.2" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="RA.Utilities.Core.Exceptions" Version="10.0.0-rc.2" />
                    
Directory.Packages.props
<PackageReference Include="RA.Utilities.Core.Exceptions" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add RA.Utilities.Core.Exceptions --version 10.0.0-rc.2
                    
#r "nuget: RA.Utilities.Core.Exceptions, 10.0.0-rc.2"
                    
#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.
#:package RA.Utilities.Core.Exceptions@10.0.0-rc.2
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=RA.Utilities.Core.Exceptions&version=10.0.0-rc.2&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=RA.Utilities.Core.Exceptions&version=10.0.0-rc.2&prerelease
                    
Install as a Cake Tool

RA.Utilities.Core.Exceptions

NuGet version Codecov GitHub license NuGet Downloads

RA.Utilities.Core.Exceptions provides a set of standardized, semantic exceptions like NotFoundException and ConflictException. It solves the problem of using generic exceptions (e.g., Exception or InvalidOperationException) for predictable business rule failures.

By throwing exceptions that describe what went wrong (e.g., a resource was not found), you can create cleaner, more maintainable code. This allows other parts of your system, like API middleware, to catch specific exception types and produce standardized, meaningful error responses automatically.

  • Clear Intent: Throwing a NotFoundException is more descriptive than a generic exception with a "not found" message.
  • Standardized Error Handling: Middleware (like in RA.Utilities.Api) can catch these specific exception types and automatically map them to the correct HTTP status codes and structured error responses (e.g., 404 Not Found, 409 Conflict).
  • Decoupled Logic: Your domain or application layer can focus on business rules and throw semantic exceptions without needing to know about HTTP details. The web layer handles the translation.
  • Reduced Boilerplate: Eliminates the need for repetitive try-catch blocks in your controllers for common error scenarios.

Getting started

You can install the package via the .NET CLI:

dotnet add package RA.Utilities.Core.Exceptions

Or through the NuGet Package Manager in Visual Studio.


Available Exceptions

NotFoundException

Inherits from Exception. Use this when a specific resource or entity cannot be found.

Usage:

public Product GetProductById(int id)
{
    var product = _productRepository.Find(id);
    if (product == null)
    {
        throw new NotFoundException("Product", id);
    }
    return product;
}

When caught by the RA.Utilities.Api middleware, this will typically be translated into an HTTP 404 Not Found response.

ConflictException

Inherits from Exception. Use this when an action cannot be completed due to a conflict with the current state of a resource, such as trying to create a duplicate item.

Usage:

public void CreateUser(string email)
{
    if (_userRepository.Exists(email))
    {
        throw new ConflictException("User", email);
    }
    // ... creation logic
}

This will typically be translated into an HTTP 409 Conflict response.

BadRequestException

Inherits from Exception. Use this for client-side errors, such as invalid input or validation failures that are discovered in the business layer.

Usage:

public void UpdateOrderStatus(int orderId, string newStatus)
{
    if (string.IsNullOrWhiteSpace(newStatus))
    {
        throw new BadRequestException("Status", "Order status cannot be empty.");
    }
    // ... update logic
}

This will typically be translated into an HTTP 400 Bad Request response.


Additional documentation

For more information on how this package fits into the larger RA.Utilities ecosystem, please see the main repository documentation.


Contributing

Contributions are welcome! If you have a suggestion for a new exception type or find a bug, please open an issue to discuss it. Please follow the contribution guidelines outlined in the other projects in this repository.

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (2)

Showing the top 2 NuGet packages that depend on RA.Utilities.Core.Exceptions:

Package Downloads
RA.Utilities.Api

Provides a collection of essential utilities for building robust and consistent ASP.NET Core APIs. This package includes endpoint registration helpers, standardized response models, and exception handling middleware to streamline development and promote best practices.

RA.Utilities.Application.Validation

Provides a utilities validators that uses FluentValidation to validate incoming requests.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
10.0.100-rc.2 197 10/27/2025
10.0.1 102 1/15/2026
10.0.0 211 11/23/2025
10.0.0-rc.2 251 11/16/2025