RecordException 0.1.2
dotnet add package RecordException --version 0.1.2
NuGet\Install-Package RecordException -Version 0.1.2
<PackageReference Include="RecordException" Version="0.1.2" />
paket add RecordException --version 0.1.2
#r "nuget: RecordException, 0.1.2"
// Install RecordException as a Cake Addin #addin nuget:?package=RecordException&version=0.1.2 // Install RecordException as a Cake Tool #tool nuget:?package=RecordException&version=0.1.2
C# record
s inheriting from Exception
Install from NuGet: dotnet add package RecordException
Then define your exceptions like this:
using RecordExceptions;
public record MissingIdException(int id): RecordException;
The exception message will automatically be MissingIdException: id = {id}
.
Probably fine for debugging, but if you want to customize that, you can:
public record MissingIdException(int id): RecordException
{
public override string Message => $"Id {id} is missing";
}
The message may also be specified in the construtor:
public record OperationCancelledException: RecordException("User has cancelled the operation.")
You can also wrap exception into InnerException, it might be useful for adding relevant information:
public record SomethingBad(Exception InnerException): RecordException("Something really bad has happened", InnerException);
Notes:
- If you are using some parameters in your message, prefer to override the Message property if you want the
x with { Prop = newValue }
syntax to work. - Even when you provide your own message, all properties will be shown bellow the stacktrace. If you don't like this,
public override string ToString() => base.ToString();
. - Don't be too surprised if this stops working with the next C# version 😅. Yes, records are not supposed to inherit from System.Exception. But they forgot to check base type of a base type 😉
License is MIT, so you can use it however you want to. If you need a record inheriting from another class, feel free to fork this repo.
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. |
.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
- No dependencies.
NuGet packages (2)
Showing the top 2 NuGet packages that depend on RecordException:
Package | Downloads |
---|---|
DotVVM
DotVVM is an open source ASP.NET-based framework which allows to build interactive web apps easily by using mostly C# and HTML. |
|
DotVVM.Contrib.CookieBar
The CookieBar control for DotVVM made by DotVVM Contrib community. |
GitHub repositories (1)
Showing the top 1 popular GitHub repositories that depend on RecordException:
Repository | Stars |
---|---|
riganti/dotvvm
Open source MVVM framework for Web Apps
|