Benutzer mit den meisten Antworten
Error Handler geht nicht

Frage
-
Hi
Ich wollte jetzt den letzten Feinschliff an meiner Software machen, und wollte einen Error Handler einbauen :
Dim iss As IO.StreamReader iss = New IO.StreamReader(Dir(Application.StartupPath + "\editor" + DateTime.Now.ToShortDateString + fileending)) editor_text.Rtf = iss.ReadToEnd iss.Close() On Error GoTo About.vb
Allerdings funktioniert das ganze nicht.
Zur Information:
Wenn die Datei gerade angelegt wird, kann das Programm nicht auf sie zugreifen ( IOException)
About.vb soll dargestellt werden, das Form sich schließen.
Und das funktioniert irgendwie nicht^^
Ich hoffe, ihr könnt mir da helfen :)
MFG
Sven
Mit freundlichen Grüßen Sven
Antworten
-
Hallo, auch wenn mir On Error nicht bekannt ist, glaube ich zu wissen, warum es nicht geht. VB.NET Code muss compiliert werden, zur Laufzeit ist also nicht mehr bekannt, wie die Dateien heißen, die du zur Entwicklung aufbaust. Also bringt weiß die CLR nichts mit About.vb anzufangen. Also nehme ich an, das du erst eine Instanz deiner From o.ä. instanzieren musst um Sie danach mittels Show(Dialog) anzuzeigen.
Soweit ich das jetzt sehen kann, stammt On Error noch aus der Zeit von VB. In .NET sind aber Try-Catch-Blöcke gebräuchlicher um Fehler abzufangen. Siehe dazu:
http://msdn.microsoft.com/de-de/library/ms973849.aspxKoopakiller [kuːpakɪllɐ] - http://koopakiller.ko.ohost.de/
- Als Antwort markiert Tom Lambert (Koopakiller)Moderator Sonntag, 2. Dezember 2012 14:01
- Tag als Antwort aufgehoben Scriptos Sonntag, 2. Dezember 2012 19:30
- Als Antwort markiert Scriptos Sonntag, 2. Dezember 2012 19:30
-
Hallo,
On Error ist eine Altlast aus Visual Basic Classic, die man meiden sollte. Funktionieren würde sie ohnehin nur, wenn Du das On Error vor die übrigen Anweisungen setzt.
Wie Koopakiller schon schreibt, solltest Du Try Catch einsetzen.
Für oben könnte das wie folgt aussehen:Try Dim pfad As String = Path.Combine(Application.StartupPath, "editor" + DateTime.Now.ToShortDateString + fileending) If File.Exists(pfad) Then editor_text.Rtf = File.ReadAllText(pfad) End If Catch ex As IOException MessageBox.Show("Die Datei ist im Zugriff" & ex.Message) End Try
Anstatt des StreamReaders werden dort bereits vorgefertigte Routinen verwendet.
Ausserdem prüft der Code ob die Datei überhaupt vorhanden ist.Gruß Elmar
- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 12. Dezember 2012 07:40
Alle Antworten
-
Hallo, auch wenn mir On Error nicht bekannt ist, glaube ich zu wissen, warum es nicht geht. VB.NET Code muss compiliert werden, zur Laufzeit ist also nicht mehr bekannt, wie die Dateien heißen, die du zur Entwicklung aufbaust. Also bringt weiß die CLR nichts mit About.vb anzufangen. Also nehme ich an, das du erst eine Instanz deiner From o.ä. instanzieren musst um Sie danach mittels Show(Dialog) anzuzeigen.
Soweit ich das jetzt sehen kann, stammt On Error noch aus der Zeit von VB. In .NET sind aber Try-Catch-Blöcke gebräuchlicher um Fehler abzufangen. Siehe dazu:
http://msdn.microsoft.com/de-de/library/ms973849.aspxKoopakiller [kuːpakɪllɐ] - http://koopakiller.ko.ohost.de/
- Als Antwort markiert Tom Lambert (Koopakiller)Moderator Sonntag, 2. Dezember 2012 14:01
- Tag als Antwort aufgehoben Scriptos Sonntag, 2. Dezember 2012 19:30
- Als Antwort markiert Scriptos Sonntag, 2. Dezember 2012 19:30
-
Hallo,
On Error ist eine Altlast aus Visual Basic Classic, die man meiden sollte. Funktionieren würde sie ohnehin nur, wenn Du das On Error vor die übrigen Anweisungen setzt.
Wie Koopakiller schon schreibt, solltest Du Try Catch einsetzen.
Für oben könnte das wie folgt aussehen:Try Dim pfad As String = Path.Combine(Application.StartupPath, "editor" + DateTime.Now.ToShortDateString + fileending) If File.Exists(pfad) Then editor_text.Rtf = File.ReadAllText(pfad) End If Catch ex As IOException MessageBox.Show("Die Datei ist im Zugriff" & ex.Message) End Try
Anstatt des StreamReaders werden dort bereits vorgefertigte Routinen verwendet.
Ausserdem prüft der Code ob die Datei überhaupt vorhanden ist.Gruß Elmar
- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 12. Dezember 2012 07:40
-
Ah okay. Ich hatte es zwar mithilfe des StreamReaders gelöst, aber deine Version ist natürlich schmaler :)
Danke für die Hilfe.
Ähm, ich habe jetzt noch nen ganz anderes Problem : Die MessageBox plopt 255 mal auf, obwohl sie nur einmal auftreten soll. WIe kann ich den Befehl dann abbrechen?- Bearbeitet Scriptos Sonntag, 2. Dezember 2012 14:20
-
Hallo,
für sich genommen wird der Code nicht mehrmalig ausgeführt?
An welcher Stelle hast Du den Code denn eingebaut?
Oder ist noch ein On Error verblieben, damit kann man so was auch leicht "verbocken" ;).
Gruß Elmar
P.S.: Als Antwort solltest Du markieren, was hilfreich war -
was hier Koopakillers Antwort gewesen wäre.- Bearbeitet Elmar BoyeEditor Sonntag, 2. Dezember 2012 15:38 P.S.
-
naja, der Code wird in einem Timerevent ausgeführt.
Aber es hat funktioniert, ich hatte einfach ausversehen den Code inerhalb einer Do-Loop Anwendung gehabt ^^
PS: Eigentlich sollte Koopakillers Antwort makiert worden sein, naja, ich habs einfach nochmal gemacht :)