Facepalm: Nicht alle Codepfade geben einen Wert zurück

In meiner neuen Rubrik Facepalm werde ich kurz und knackig kleine Tipps und Hilfen geben, die irgendwo gefragt wurden oder auf die ich gerade gestoßen bin. Eine Facepalm ist die Geste, die man macht, wenn man die Hand vor’s Gesicht schlägt wenn man sagt „Warum bin ich da nicht selbst drauf gekommen?“.

Die Artikel dieser Rubrik werden sehr kurz sein, denn es handelt sich schliesslich um einfache Probleme 🙂

In diesem ersten Beitrag geht es um die Fehlermeldung „Nicht alle Codepfade geben einen Wert zurück“, die z.B. in folgender Methode vom Compiler geworfen wird:

public int SinnDesLebens(bool provoziereFehler)
{
  if (provoziereFehler == false)
  {
    return 42;
  }
}

Der Grund für diesen Fehler ist sehr einfach: Ein Rückgabewert in einer C#-Funktion ist nicht optional, sondern es muss in jedem Fall ein Wert zurückgegeben werden. Im obigen Beispiel wird aber kein Wert zurückgegeben, wenn provoziereFehler den Wert true enthält.

Beheben kann man diesen Fehler ganz einfach, in dem man entweder im Else-Zweig oder nach der If-Abfrage einen Wert zurückgibt, z.B. eine -1 um ein Problem anzuzeigen.

public int SinnDesLebens(bool provoziereFehler)
{
  if (provoziereFehler == false)
  {
    return 42;
  }

  return -1;
}
Advertisements

Veröffentlicht am 15.06.2011 in C#, Facepalm, Grundlagen, Grundlagen, Mini-Tutorial, XNA und mit , , , , , , , getaggt. Setze ein Lesezeichen auf den Permalink. 4 Kommentare.

  1. Wozu hab ich denn mein FAQ gestartet? 😀
    Naja, solche Fehler sollte man dann doch selber Lösen können… Wer bei solchen Fehlern Hilfe brauchst sollte sich besser ein gutes C# Buch kaufen. (Oder hat wirklich grade ein Brett vorm Kopf, das kenne ich ;))

    • Da stimme ich meinem Vorredner grundsätzlich zu.
      Solche fundamentalen Sprachkenntnisse sollte man beherschen, bevor man sich an die Spieleprogrammierung mit XNA wagt.
      Immerhan fängt man mit dem Bau eines Hauses auch nicht beim Dach an.

      Hierzu möchte ich auch gerne auf eine Webcastreihe verlinken, die mir am Anfang sehr stark geholfen hat.

      http://www.microsoft.com/germany/msdn/webcasts/serien/msdnwcs-0604-01.mspx

      Grüße Kai

      • Das stimmt natürlich grundsätzlich, aber manchmal hat man tatsächlich aus irgend einem Grund ein Brett vor dem Kopf und genau dann helfen solche kleinen Beiträge, die innerhalb von 5 Minuten geschrieben sind…

        Danke für den Link…

  2. Danke, bin im ersten Semester und es hat mir gerade geholfen.

Kommentar verfassen

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

WordPress.com-Logo

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

Twitter-Bild

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

Facebook-Foto

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

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

%d Bloggern gefällt das: