Neu in .NET 8.0 [14]: Neue Wächtermethoden für Parameter
.NET 8.0 bietet neue Hilfsmethoden zum Auslösen von Fehlern bei falschen Parametern.

(Bild: Dilok Klaisataporn/Shutterstock.com)
- Dr. Holger Schwichtenberg
In .NET 6.0 hatte Microsoft die Wächter-Methode ArgumentNullException.ThrowIfNull(Wert)
eingeführt, um zu prüfen, ob ein Methodenparameter als Null-Wert übergeben wurde. In .NET 7.0 folgte ArgumentException.ThrowIfNullOrEmpty(Wert)
für Zeichenketten.
In .NET 8.0 gibt es nun weitere Wächter für die Methodenparameter, die auch Wertebereiche bei Zahlen prüfen:
ArgumentOutOfRangeException.ThrowIfZero()
ArgumentOutOfRangeException.ThrowIfNegative()
ArgumentOutOfRangeException.ThrowIfNegativeOrZero()
ArgumentOutOfRangeException.ThrowIfGreaterThan()
Das funktioniert mit allen Zahlentypen, auch eigenen Zahlentypen auf Basis von INumberBase<T>
und IComparable<T>
.
namespace NET8_Console;
public class FCL_Exceptions
{
public string Calc(decimal? betrag, decimal prozent, string einheit)
{
#region neue Wächtermethoden vor .NET 8.0
// seit .NET 6.0:
ArgumentNullException.ThrowIfNull(betrag);
// seit .NET 7.0:
ArgumentException.ThrowIfNullOrEmpty(einheit);
#endregion
#region neue Wächtermethoden in .NET 8.0
ArgumentOutOfRangeException.ThrowIfZero(betrag.Value);
ArgumentOutOfRangeException.ThrowIfNegativeOrZero(betrag.Value);
ArgumentOutOfRangeException.ThrowIfNegative(prozent);
ArgumentOutOfRangeException.ThrowIfGreaterThan(prozent, 100);
#endregion
var ergebnis = betrag * prozent / 100;
return $"{prozent}% von {betrag} {einheit} sind {ergebnis} {einheit}";
}
public void Run()
{
// 50% von 42 Euro sind 21 Euro:
Console.WriteLine(Calc(42, 50, "Euro"));
}
}
(rme)