|
You last visited: Today at 06:05
Advertisement
vb.net simple ErrorHandler
Discussion on vb.net simple ErrorHandler within the Coding Tutorials forum part of the General Coding category.
04/27/2014, 07:33
|
#1
|
elite*gold: 0
Join Date: Nov 2013
Posts: 42
Received Thanks: 15
|
VB6 simple ErrorHandler
An Stellen, wo ein Fehler auftreten könnte, kann man Folgendes einsetzen :
Code:
On Error GoTo ErrHandler
Dazu muss vor ein
Code:
ErrHandler:
Exit Sub
eingesetzt werden.
In meinem Fall (Code ersetzt den Text in einer Datei) :
Erklärung.
On Error GoTo ErrHandler =
Wenn ein Fehler auftritt, wird der Code an der Stelle ErrHandler: fortgeführt.
Exit Sub =
-Dat Random Guy Making ****** Turorials Because He Is Bored
|
|
|
04/27/2014, 07:40
|
#2
|
elite*gold: 3570
Join Date: Dec 2012
Posts: 13,044
Received Thanks: 8,252
|
Nein.
Code:
Try
[...]
Catch ex As Exception
MessageBox.Show(ex.ToString())
//oder
Console.WriteLine(ex.ToString())
End Try
Fehler analysieren, wenn nötig Google nutzen und Fehler beheben.
Wer auch immer dieses GoTo nutzt gehört an die Wand geschlagen.
|
|
|
04/27/2014, 07:43
|
#3
|
elite*gold: 0
Join Date: Nov 2013
Posts: 42
Received Thanks: 15
|
Quote:
Originally Posted by Requi
Nein.
Code:
Try
[...]
Catch ex As Exception
MessageBox.Show(ex.ToString())
//oder
Console.WriteLine(ex.ToString())
End Try
Fehler analysieren, wenn nötig Google nutzen und Fehler beheben.
Wer auch immer diese " :" Labels nutzt gehört an die Wand geschlagen.
|
Wieso wusste ich das die erste Antwort wieder etwas negatives ist... Ich meine wenn man nen ErrorHandler braucht...
btw: Hast mich auf ne Idee gebracht, danke
|
|
|
04/27/2014, 07:47
|
#4
|
elite*gold: 3570
Join Date: Dec 2012
Posts: 13,044
Received Thanks: 8,252
|
Quote:
Originally Posted by iSam34
Wieso wusste ich das die erste Antwort wieder etwas negatives ist...
|
Das ist nicht negativ, sondern eine Verbesserung, da man wenn man anderen Menschen etwas lehren möchte, es nicht auf die falsche Weise machen sollte.
Quote:
Originally Posted by iSam34
Ich meine wenn man nen ErrorHandler braucht...
|
Dann macht man es richtig. Die Methode bei jedem klitze-kleinen Fehler zu beenden ist ineffektiv und macht das Programm ziemlich nutzlos.
|
|
|
04/27/2014, 07:49
|
#5
|
elite*gold: 0
Join Date: Nov 2013
Posts: 42
Received Thanks: 15
|
Quote:
Originally Posted by Requi
Das ist nicht negativ, sondern eine Verbesserung, da man wenn man anderen Menschen etwas lehren möchte, es nicht auf die falsche Weise machen sollte.
Dann macht man es richtig. Das Programm bei jedem klitze-kleinen Fehler zu beenden ist ineffektiv und macht das Programm ziemlich nutzlos.
|
Das Programm wird nicht beendet. Der aktuelle Sub. Wenn zum Beispiel wie in meinem Fall keine Datei angegeben ist, in die der neue Text gespeichert werden soll, dann speichert er einfach nicht.
|
|
|
04/27/2014, 07:52
|
#6
|
elite*gold: 3570
Join Date: Dec 2012
Posts: 13,044
Received Thanks: 8,252
|
Quote:
Originally Posted by iSam34
Das Programm wird nicht beendet. Der aktuelle Sub. Wenn zum Beispiel wie in meinem Fall keine Datei angegeben ist, in die der neue Text gespeichert werden soll, dann speichert er einfach nicht.
|
Habe meinen Post korrigiert. Selbst wenn nur die Methode einfach beendet wird, ist es ineffektiv.
Anstatt wenn die Datei nicht angebenen ist, einfach gar nichts zu machen, wäre es intelligenter eine neue Datei zu erstellen mit einem wiedererkennbaren Namen und dort den Text zu speichern.
Oder wie bei deinem Code es am Besten wäre, zu überprüfen ob die Textboxen gefüllt sind und eine Meldung (MessageBox.Show()) auftauchen lassen die sagt, dass dort etwas eingetragen werden MUSS.
|
|
|
04/27/2014, 07:52
|
#7
|
elite*gold: 0
Join Date: Nov 2013
Posts: 42
Received Thanks: 15
|
Zur Veranschaulichung :
Es ist keine Datei angegeben, die gespeichert werden soll. Der Speichervorgang bricht ab, nicht die Ausführung des Programmes.
Edit :
Da das Programm dafür da ist, irgendeine Datei auszulesen (also nicht nur *.txt), ist das sinnlos.
|
|
|
04/27/2014, 07:57
|
#8
|
elite*gold: 3570
Join Date: Dec 2012
Posts: 13,044
Received Thanks: 8,252
|
Quote:
Originally Posted by iSam34
Zur Veranschaulichung :
Es ist keine Datei angegeben, die gespeichert werden soll. Der Speichervorgang bricht ab, nicht die Ausführung des Programmes.
|
Dein Code verbesserte Version:
Code:
Private Sub Button2_Click(object sender, EventArgs e) Handles Button2.Click
If TextBox1.Text.Length > 0 And TextBox2.Text.Length < 0 Then
Try
File.WriteAllText(...)
Catch FileNotFoundException
MessageBox.Show("Du musst einen Pfad angeben")
End Try
End If
End Sub
Quote:
Originally Posted by iSam34
Edit :
Da das Programm dafür da ist, irgendeine Datei auszulesen (also nicht nur *.txt), ist das sinnlos.
|
Dann fragst du vorher ab, falls der Pfad nicht existiert, ob es auf dem Desktop abgelegt werden soll mit Standardname.Standardendung
|
|
|
04/27/2014, 07:59
|
#9
|
elite*gold: 0
Join Date: Nov 2013
Posts: 42
Received Thanks: 15
|
Quote:
Originally Posted by Requi
Dein Code verbesserte Version:
Code:
Private Sub Button2_Click(object sender, EventArgs e) Handles Button2.Click
If TextBox1.Text.Length > 0 And TextBox2.Text.Length < 0 Then
Try
File.WriteAllText(...)
Catch FileNotFoundException
MessageBox.Show("Du musst einen Pfad angeben")
End Try
End If
End Sub
|
Es ist aber ein Tutorial, mit einem Beispiel. Du hast soeben einen anderen Lösungsweg für dieses Beispiel angegeben. Das ist auch nicht Sinn der Sache. Trotzdem danke für deinen Code.
|
|
|
04/27/2014, 08:04
|
#10
|
elite*gold: 3570
Join Date: Dec 2012
Posts: 13,044
Received Thanks: 8,252
|
Quote:
Originally Posted by iSam34
Es ist aber ein Tutorial, mit einem Beispiel. Du hast soeben einen anderen Lösungsweg für dieses Beispiel angegeben. Das ist auch nicht Sinn der Sache. Trotzdem danke für deinen Code. 
|
Es ist aber ein Tutorial mit einem schlechten Beispiel und schlechte Beispiele sind nunmal wie man es schon liest/hört schlecht.
Wie schon oben erwähnt, sollte man jemanden das Coden nicht mit schlechten Angewohnheiten beibringen.
Man möchte am Ende effektiven, funktionierenden und wenn möglich schnellen Code und keinen Haufen Müll als Endprodukt.
Nur weil Microsoft etwas einbaut, heißt es noch lange nicht, dass man es nutzen sollte.
|
|
|
04/27/2014, 11:18
|
#11
|
elite*gold: 1
Join Date: Jun 2012
Posts: 5,819
Received Thanks: 3,200
|
Cool, wusste ich noch gar nicht. Du solltest aber den Titel zu VB6 ändern, sonst denkt man noch etwas falsches hier
|
|
|
04/27/2014, 17:55
|
#12
|
elite*gold: 1091
Join Date: Jun 2007
Posts: 19,836
Received Thanks: 7,180
|
Ich sehe keinen vernünftigen Grund, ein goto Konstrukt einem simplen try/catch Block vorzuziehen. Du kannst dort sogar effektiv bestimmte Exceptions abfangen und festlegen, wie diese behandelt werden sollen. Für deinen goto Errorhandler müsstest du entweder jedes mal einen neuen Errorhandler definieren oder mit if-Abfragen prüfen, was du meistens nicht kannst.
|
|
|
04/27/2014, 18:20
|
#13
|
elite*gold: 2932
Join Date: Oct 2009
Posts: 6,966
Received Thanks: 1,097
|
pffff diese aufregung hier...
sag dem TE doch einfach lieber mal einer das dieses konstrukt vb6 ist.
Vb.net ist eine andere technologie somit gibt es dort andere und bessere möglichkeiten
|
|
|
All times are GMT +1. The time now is 06:06.
|
|