NULL-Verweisausnahme trotz Return in Function

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von Kosmos_Igel.

    NULL-Verweisausnahme trotz Return in Function

    Hallo zusammen,

    ich habe ein Problem mit einer Function in einer Fachklasse. Und zwar sollen in der Fachklasse Kundenliste eine List(of T) mit eine Vielzahl an Kunden erstellt werden. Dort gibt es auch die Function KundeFinden mit dem folgenden Quellcode:

    Quellcode

    1. Public Function kundeFinden(ByVal kundenNr As Integer)
    2. For i As Integer = 0 To kundenListe.Count - 1
    3. If kundenListe(i).pkundenNr = kundenNr Then
    4. Return KundenListe(i)
    5. End If
    6. Next
    7. End Function


    Diese Funktion wird über den Oberflächencode in der Form1.vb über den Button "Kunden suchen" aufgerufen.

    Quellcode

    1. Private Sub btnSuchen_Click(sender As System.Object, e As System.EventArgs) Handles btnSuchen.Click
    2. Dim kundenNr As Integer = Integer.Parse(tbxKundenNr.Text)
    3. einKunde = eineKundenliste.kundeFinden(kundenNr)
    4. rtbAusgabe.Text = Titel.Titel & vbCrLf & einKunde.Ausgabe
    5. End Sub


    Ich habe nun zwei Probleme, die aus meiner Sicht zusammenhängen:

    Problem 1: In der Function in der Fachklasse steht der NULL-Verweisausnahme. Einen Return-Anweisung ist enthalten, aber es fehlt anscheinend eine ELSE-Angabe in der IF-Verzweigung. Leider habe ich trotz mehrfachen Versuchens und der Recherche im Forum/Internet keine Lösung gefunden. Mit Return Nothing nach der For.. Next-Schleife ist zwar die Meldung weg, aber Problem Nr. 2 ist noch akut.

    Problem 2: Wenn ich über die GUI eine Kundennummer suchen lassen, die es aktuell noch nicht gibt oder die bereits gelöscht wurde, dann erscheint die Fehlermeldung NullReferenceException und somit genau die Null-Verweisausnahme. Der Fehler liegt meiner Meinung in der Codierung einKunde.Ausgabe, da die Variable einKunde keinen Wert besitzt, wenn die Kundennummer bisher nicht vergeben ist.

    Kann mir einer helfen diese zwei Fehler aus dem Quellcode zu beseitigen?
    Mach mal Option Strict On.

    Kosmos_Igel schrieb:

    Der Fehler liegt meiner Meinung in der Codierung einKunde.Ausgabe, da die Variable einKunde keinen Wert besitzt, wenn die Kundennummer bisher nicht vergeben ist.
    Richtig. Insofern musst Du halt davor abfragen, ob Du einen Wert von der Funktion erhalten hast.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Du musst halt mit Is Nothing vorher prüfen ob deine Instanz überhaupt vorhanden ist bevor du auf die Eigenschaften zugreifst.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen