Informationen werden in Form von Typen gespeichert, die einen Wertebereich haben. Ween dieser Wertebereich über oder unterschritten wird, bedeutet das für die binäre Repräsentation, dass ein Überlauf der Wertigkeit stattfindet. Mit der Anweisung checked können wir zur Laufzeit solche Fehler erkennen und mittels Fehlerbehandlung gezielt Massnahmen einleiten. Standardmässig kompiliert C# den Code im unchecked-Verfahren, somit werden Überlauffehler nicht geahndet. Wenn man auf den Überlauf achten muss kann man das Schlüsselwort checked brauchen.
try {
// Keine Überlaufkontrolle
int i = int.MaxValue; // 2147483647
i++; // -2147483648
// Überlaufkontrolle
checked
{
int x = int.MaxValue; // 2147483647
x++; // OverflowException -> Arithmetic operation resulted in an overflow
}
}
catch (OverflowException exc) {
Console.WriteLine(exc.Message);
}
catch (Exception exc) {
Console.WriteLine(exc.Message);
}
Beim Code mit Überlaufskontrolle gibt es beim x++ eine OverflowException da der Maximale Integer Wert überschritten worde ist.