Frage zu Try Catch und Objekten, die erst im Try Block erzeugt werden

  • VB.NET
  • .NET 4.5

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

    Frage zu Try Catch und Objekten, die erst im Try Block erzeugt werden

    Guten Abend,

    VB.NET-Quellcode

    1. Dim sw As System.IO.StreamWriter
    2. Try
    3. sw = My.Computer.FileSystem.OpenTextFileWriter(sPath, False, Encoding)
    4. sw.Write(sData)
    5. sw.Close()
    6. Exit Sub
    7. Catch ex As Exception
    8. MsgBox(ex.Message)
    9. Finally
    10. If sw IsNot Nothing Then
    11. sw.Close()
    12. End If
    13. End Try


    Bringt die Meldung "Warnung BC42104 Die sw-Variable wird verwendet, bevor ihr ein Wert zugewiesen wird."

    Wie wäre der bessere Ansatz?

    Vielen Dank

    John

    VB.NET-Quellcode

    1. Dim sw As System.IO.StreamWriter = Nothing
    2. Try
    3. ....

    Und die Warnung ist weg. Ein Dispose nach dem Close wäre angebracht um den StreamWriter wieder freizugeben.
    Die Natur ist bekanntermaßen knallhart, sie sortiert aus was sich nicht bewährt hat.(Harald Lesch, 2021)

    Demnach müssten wir bald dran sein...
    @John422 Pack den StreamWriter in ein Using, da brauchst Du kein Finally.

    VB.NET-Quellcode

    1. Try
    2. Usig sw = My.Computer.FileSystem.OpenTextFileWriter(sPath, False, Encoding)
    3. sw.Write(sData)
    4. End Using
    5. Return
    6. Catch ex As Exception
    7. MsgBox(ex.Message)
    8. End Try
    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!