Funktion gibt nicht fuer alle Codepfade einen Wert zurueck

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Funktion gibt nicht fuer alle Codepfade einen Wert zurueck

    Hallo,

    kann mir jemand erklaeren (fuer Anfaenger) was die Fehlermeldung "Funktion XY gibt nicht fuer alle Codepfade einen Wert zurueck" bedeutet?
    Was (zum Henker) sind denn Codepfade?

    Hier ein Beispiel wo der Fehler bei mir Auftritt:

    VB.NET-Quellcode

    1. 'Optionen lesen
    2. Public Function readOption(optKey As String) As String
    3. Dim keyExist As Boolean = False
    4. Try
    5. Using reader As New StreamReader(optFilePath & optFileName)
    6. While Not reader.EndOfStream
    7. Dim line As String = reader.ReadLine
    8. Dim values As String() = line.Split("="c)
    9. If values.Length > 0 AndAlso values(0) = optKey Then
    10. keyExist = True
    11. Return values(1)
    12. End If
    13. End While
    14. If keyExist = False Then
    15. MsgBox("Der Schluesselname " & optKey & " ist nicht vorhanden.")
    16. Return String.Empty
    17. End If
    18. End Using
    19. Catch ex As Exception
    20. MsgBox("Es trat ein Fehler beim lesen der Datei auf.")
    21. Return String.Empty
    22. End Try
    23. End Function


    Zum besseren Verstaendnis fuer meine evtl "dumme" Frage. Ich mach nu schon sein 20 Jahren mit VB rum.
    Es war immer so ein hobbymaessiges rumwurschteln fuer den Hausgebrauch. Deshalb fehlt mir einfach die
    Kompetenz um solch "kryptischen" Fehlermeldungen zu begreifen.
    Ich mein die Fehlermeldung klingt erstmal nachvollziehbar, aber ich komm nicht drauf.

    Deshalb bitte ich jetzt hier um Hilfe.

    Ps.:
    Herr ChatGPT konnte mir das auch nicht verstaendlich naeher bringen.
    Nach gefuehlt 100 Stunden Diskussion hab ich ihm den Laufpass gegeben. :/
    Deine Funktion returned nicht in jedem Fall etwas, weshalb eben NULL bei der Abfrage herauskommen kann.
    Wenn du deiner Abfrage:

    VB.NET-Quellcode

    1. If keyExist = False Then
    2. MsgBox("Der Schluesselname " & optKey & " ist nicht vorhanden.")
    3. Return String.Empty
    4. End If


    Noch ein Else mitsamt returnvalue hinzufügst:

    VB.NET-Quellcode

    1. Else
    2. Return "Irgendwas"
    3. End If


    verschwindet die Warnung auch.


    Meine Website:
    www.renebischof.de

    Meine erste App (Android):
    PartyPalooza
    @ohjamaney Willkommen im Forum. :thumbup:
    Oder so:
    Aus zwei Mal Return String.Empty in einem If/Catch einfach Return String.Empty vor das End Function.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    ohjamaney schrieb:

    Ich wollte ihn auch verstehen.
    Das ist wirklich hilfreich :!:
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    ohjamaney schrieb:

    Was (zum Henker) sind denn Codepfade?
    Ein CodePfad ist der Weg, den die Code-Ausführung beim Durchlaufen einer Methode nimmt.
    Normalerweise gehts vom Anfang bis zum Ende.
    Aber bei einem If verzweigt sich der Weg: Es gibt den If-Zweig und den Else-Zweig, und beim EndIf finden die beiden Pfade wieder zueinander.
    In einer Schleife läuft der CodePfad eine Weile im kreis.
    An einer Return-Anweisung beendet ein Codepfad vorzeitig.