Die Operatoren checked und unchecked

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.


Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Log Out / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Log Out / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Log Out / Ändern )

Verbinde mit %s

Follow

Get every new post delivered to your Inbox.