System.Net.WebException Fehler

  • VBScript

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

    System.Net.WebException Fehler

    Hey @ all!

    Ich hab grad ein größeres Programm programmiert... Dabei ist mir immer ein Fehler unterlaufen:
    "Eine Ausnahme (erste Chance) des Typs "System.Net.WebException" ist in System.dll aufgetreten."
    Tja den Code wo der Fehler entstanden ist hab ich gefunden:

    Visual Basic-Quellcode

    1. Try
    2. Dim c As New Net.WebClient
    3. Dim bla As String = c.DownloadString("http://Seite.html")
    4. MsgBox("Datei existiert.")
    5. Catch ex As Exception
    6. MsgBox("Datei existiert nicht.")
    7. Me.Close()
    8. End Try

    Der Fehler tritt nur auf, wenn die Datei nicht existiert. Außerdem stürzt das Programm nicht ab, aber es zeigt einen Fehler an.
    Könnt ihr mir helfen?

    Danke für jede Antwort!

    LG
    Erstmal hast du im falschen Forum gepostet. VBScript ist eine eigene Sprache und hat mit VB.NET abgesehen von der Syntax nicht wirklich viel zu tun.

    Zu deinem Problem:
    Wenn du versuchst, mit der WebClient-Klasse eine Datei herunterzuladen, die nicht existiert, dann wird eine Ausnahme (Exception) vom Typ "System.Net.WebExpection" geworfen.
    Normalerweise würde diese dein Programm abstürzen lassen, jedoch befindet sich der ganze Code-Abschnitt in einem Try-Catch-Block.
    Dieser fängt die Ausnahme ab und erlaubt dem Programmierer, bspw. eine eigene Fehlermeldung auszugeben.

    Try-Catch sollte jedoch nicht bei Ausnahmen verwendet werden, die man verhindern kann.
    Beispiel: Du willst eine Datei auslesen. Existiert sie nicht, wird eine Exception geworfen.
    Erster Gedanke:

    Visual Basic-Quellcode

    1. Try
    2. Dim Content As String = System.IO.File.ReadAllText("datei.txt")
    3. MessageBox.Show("Dateiinhalt: " & Content)
    4. Catch ex As Exception
    5. MessageBox.Show("Fehler beim Auslesen der Datei.")
    6. End Try
    Dies sollte allerdings vermieden werden.
    Sauberer:

    Visual Basic-Quellcode

    1. Dim File As String = "datei.txt"
    2. If System.IO.File.Exists(File) Then
    3. Dim Content As String = System.IO.File.ReadAllText(File)
    4. MessageBox.Show("Dateiinhalt: " & Content)
    5. Else
    6. MessageBox.Show("Die Datei existiert nicht.")
    7. End If
    Du müsstest zuzüglich auch noch abfragen, ob das Programm genügend Rechte zum Öffnen und Lesen der Datei hat usw.


    Nun zum Grund, weshalb du diese Meldung angezeigt bekommst.
    Immer, wenn eine Exception geworfen wird - egal, ob abgefangen oder nicht -, wird in der Debug-Konsole eine Meldung ausgegeben.
    Dadurch wird der Programmierer trotzdem informiert, der Benutzer bekommt aber nichts davon mit.

    haiyyu schrieb:

    Erstmal hast du im falschen Forum gepostet. VBScript ist eine eigene Sprache und hat mit VB.NET abgesehen von der Syntax nicht wirklich viel zu tun.

    Zu deinem Problem:
    Wenn du versuchst, mit der WebClient-Klasse eine Datei herunterzuladen, die nicht existiert, dann wird eine Ausnahme (Exception) vom Typ "System.Net.WebExpection" geworfen.
    Normalerweise würde diese dein Programm abstürzen lassen, jedoch befindet sich der ganze Code-Abschnitt in einem Try-Catch-Block.
    Dieser fängt die Ausnahme ab und erlaubt dem Programmierer, bspw. eine eigene Fehlermeldung auszugeben.

    Try-Catch sollte jedoch nicht bei Ausnahmen verwendet werden, die man verhindern kann.
    Beispiel: Du willst eine Datei auslesen. Existiert sie nicht, wird eine Exception geworfen.
    Erster Gedanke:

    Visual Basic-Quellcode

    1. Try
    2. Dim Content As String = System.IO.File.ReadAllText("datei.txt")
    3. MessageBox.Show("Dateiinhalt: " & Content)
    4. Catch ex As Exception
    5. MessageBox.Show("Fehler beim Auslesen der Datei.")
    6. End Try
    Dies sollte allerdings vermieden werden.
    Sauberer:

    Visual Basic-Quellcode

    1. Dim File As String = "datei.txt"
    2. If System.IO.File.Exists(File) Then
    3. Dim Content As String = System.IO.File.ReadAllText(File)
    4. MessageBox.Show("Dateiinhalt: " & Content)
    5. Else
    6. MessageBox.Show("Die Datei existiert nicht.")
    7. End If
    Du müsstest zuzüglich auch noch abfragen, ob das Programm genügend Rechte zum Öffnen und Lesen der Datei hat usw.


    Nun zum Grund, weshalb du diese Meldung angezeigt bekommst.
    Immer, wenn eine Exception geworfen wird - egal, ob abgefangen oder nicht -, wird in der Debug-Konsole eine Meldung ausgegeben.
    Dadurch wird der Programmierer trotzdem informiert, der Benutzer bekommt aber nichts davon mit.

    Ist das nicht nur für Datein, die auf dem Pc bereits vorhanden sind?
    Aber vielen Dank für die Erklärung!

    LG
    Nein, es gibt sehr viele verschiedene Exceptions. ;)
    Für fast alles, was so an Fehlern in einem .NET-Programm auftreten kann.

    Dazu zählen natürlich auch Dateizugriffsfehler, Netzwerkfehler, Speicherfehler, etc.

    haiyyu schrieb:

    Nein, es gibt sehr viele verschiedene Exceptions. ;)
    Für fast alles, was so an Fehlern in einem .NET-Programm auftreten kann.

    Dazu zählen natürlich auch Dateizugriffsfehler, Netzwerkfehler, Speicherfehler, etc.

    achso... hast du vielleicht eine ahnung wie man meinen code ohne fehler schreiben kann?
    Denn mit IO geht das doch sehr schlecht..?