Eine Ausnahme (erste Chance) des Typs "System.IO.IOException" ist in Microsoft.VisualBasic.dll aufgetreten.

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von Alpha11833.

    Eine Ausnahme (erste Chance) des Typs "System.IO.IOException" ist in Microsoft.VisualBasic.dll aufgetreten.

    Seid gegrüßt,

    ich habe versucht eine Datei zu downloaden und danach zu starten:

    VB.NET-Quellcode

    1. My.Computer.Network.DownloadFile _
    2. ("Link", _
    3. "Pfad")
    4. Process.Start("Pfad")

    Doch das funktioniert nur beim ersten mal.
    Wenn ich die datei bereits gedownloaded hab und das ganze wiederhole kommt diese Fehlermeldung:
    "Eine Ausnahme (erste Chance) des Typs "System.IO.IOException" ist in Microsoft.VisualBasic.dll aufgetreten."
    Kann mir jemand helfen, dass er das erkennt, dass schon eine Datei da ist, oder dass er sie einfach überschreibt?

    Lg
    lass dir den fehler ausgeben:

    VB.NET-Quellcode

    1. Try
    2. My.Computer.Network.DownloadFile("LINK", "PFAD")
    3. Catch ex As System.IO.IOException
    4. MsgBox(ex.Message)
    5. End Try


    PS: JAJA ich weiss MSGBox, ist mir in diesem fall aber egal
    nein - hier ist TryCatch malwieder überflüssig.
    Du kannst doch mit System.IO.File.Exists() testen, ob die Datei besteht (und entweder dann nicht downen, oder die datei löschen).
    Ist auch nicht mehr Code.
    TryCatch sollte man nicht zur KontrollFluß-Steuerung verwenden.
    Fehlermeldungen sind in erster Linie nicht zum catchen da, sondern dass du den Fehler behebst, d.h. so proggst, dass unzulässige Aufrufe eben nicht mehr auftreten.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „ErfinderDesRades“ ()

    Hey,

    wie ErfinderDesRades schon sagte solle man Try-Catch Blöcke niemals zur Ablaufsteuerung verwenden. Allerdings sollte man sie auch nicht garnicht verwenden, da es immer mal zu unerwarteten Fehlern kommen kann, an welche man zur Laufzeit nicht gedacht hat. Hier bietet sich ein Try-Catch Block dann dazu an diese Fehler z.B. zu loggen und dem Benutzer eine anschauliche Fehlermeldung auszugeben.

    lg.

    LucaWelker
    lg.

    LucaWelker
    Das Loggen und Fehlermeldung ausgeben erledigt man besser gleich anwendungsweit. (Application.UnhandledException - Event behandeln)

    VB.NET-Quellcode

    1. Imports Microsoft.VisualBasic.ApplicationServices
    2. Imports WinFormApp = System.Windows.Forms.Application
    3. Namespace My
    4. Partial Friend Class MyApplication
    5. Private Sub App_Startup(ByVal sender As Object, ByVal e As StartupEventArgs) Handles Me.Startup
    6. AddHandler AppDomain.CurrentDomain.UnhandledException, AddressOf SideThread_Exception
    7. AddHandler WinFormApp.ThreadException, AddressOf MainThread_Exception
    8. End Sub
    9. Private Shared Sub MainThread_Exception(ByVal sender As Object, ByVal e As System.Threading.ThreadExceptionEventArgs)
    10. MessageBox.Show("Log unhandled main-thread-Exception here" & vbLf & e.Exception.ToString())
    11. WinFormApp.Exit()
    12. End Sub
    13. Private Shared Sub SideThread_Exception(ByVal sender As Object, ByVal e As System.UnhandledExceptionEventArgs)
    14. MessageBox.Show("Log unhandled side-thread-Exception here" & vbLf + e.ExceptionObject.ToString())
    15. WinFormApp.Exit()
    16. End Sub
    17. End Class
    18. End Namespace
    Cool danke für eure Tipps.
    Ok dann werde ich nicht Try-Catch benutzen.
    Aber danke, dass das rein gezogen wurde und dann noch erklärt...
    Ich habe das jetzt eingefügt von ErfinderDesRades, aber der zeigt nur die erste MessageBox an und danach schließt er sich.
    Was hab ich diesmal falsch gemacht?
    Aber nach der Messagebox kommt schon noch der CodeStop der IDE, oder? Damit du genau siehst, wo der Fehler entsteht.

    Ansonsten habichmich ja schon geäußert - ist das untergegangen?

    ErfinderDesRades schrieb:

    Du kannst doch mit System.IO.File.Exists() testen, ob die Datei besteht (und entweder dann nicht downen, oder die datei löschen).