Gültigkeit eines Objektes bzw. dessen Instanz

  • VB.NET
  • .NET (FX) 3.0–3.5

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

    Gültigkeit eines Objektes bzw. dessen Instanz

    Hallo Leute,

    ich versuche, mittels einer Funktion herauszufinden, ob ein Schlüsselpaar in der Registry existiert oder nicht.

    VB.NET-Quellcode

    1. Public Function getRegValue(ByVal SubKey As String, ByVal ValName As String) As String
    2. Dim iResult As String = ""
    3. Try
    4. Dim key As RegistryKey
    5. key = Registry.CurrentUser.OpenSubKey(SubKey)
    6. iResult = key.GetValue(ValName).ToString
    7. Catch ex As Exception
    8. Hilfssachen.ShowError(funcinfo.GetCurrentMethod.Name, ex.Message)
    9. End Try
    10. Return iResult
    11. End Function


    Wenn nun aber der Wert nicht existiert, kommt es (verständlicherweise) zu einer Exception.
    Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.

    Nun dachte ich, das ich mit

    VB.NET-Quellcode

    1. If Not key.GetValue(ValName) Is Nothing Then
    2. iResult = key.GetValue(ValName).ToString
    3. End If

    diesem aus dem Weg gehen kann, aber nunja ... dem ist nicht so.

    Wie kann ich ein Objekt auf seine Gültigkeit hin überprüfen, ohne eine Ausnahme auszulösen?
    Das Problem ist wohl das der Key mit ValName nicht vorhanden ist. Also kann der Value davon nicht zurück gegeben werden.

    Schau mal hier
    msdn.microsoft.com/de-de/libra…y.getvalue(v=vs.110).aspx
    Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.

    hirnwunde schrieb:

    VB.NET-Quellcode

    1. If Not key.GetValue(ValName) Is Nothing Then
    2. iResult = key.GetValue(ValName).ToString
    3. End If
    Da wird wohl key nicht existieren. Machst Du

    VB.NET-Quellcode

    1. If key IsNot Nothing AndAlso key.GetValue(ValName) IsNot Nothing Then
    2. iResult = key.GetValue(ValName).ToString
    3. End If
    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!
    wie im Tut gesagt und vorgeführt: Bei einer (Argument)Null(Reference)Exception muss man vor allem durch debuggen herausfinden, welches genau der Ausdruck (oder die Variable (was ja auch ein Ausdruck ist)) ist, der Null ergibt, wovon weiteres abgerufen dann logischerweise scheitern muss.
    Üblicherweise klärt sich dann sofort alles auf.