Visual Basic Forum

Visual Basic Forum
für VB6 und VB.NET Programmierer
 
RegistrierenRegistrieren  LoginLogin

Neues Thema eröffnen   Neue Antwort erstellen    Visual Basic Forum Foren-Übersicht -> [VB.NET] Tutorials
Autor
Nachricht
Marduk
Überflieger
Überflieger

Anmeldedatum: 16.04.2008
Beiträge: 374

Fehlerbehandlung
Verfasst am: 06.08.2009, 13:25

Man kann noch so sorgsam programmieren, doch irgendwann erwischt es jeden. Das Programm macht

Fehler. Um die Fehler, ob gewollt oder nicht, zu vermeiden bietet VB.NET einige Konstrukte die

Fehler nicht zu vermeiden, aber aufzufangen und zu verarbeiten. Das hat den Vorteil, dass man zum

Einen Fehler abfangen und gleichzeitig das Programm weiterlaufen lassen kann.
Konstrukte wie man sie aus VB6 kannte (on error goto ) werden zwar noch von .NET unterstützt, das

heißt aber nicht, dass man sie auch verwenden sollte. Das Framework bietet eine viel bessere

Fehlerbehandlung als das simple goto.
Visual Basic: [code]
Try
'Code
Catch ex As Exception
MsgBox(ex.Message)
End Try
[/code]
So sieht dann ein Fehler-Konstrukt aus. Falls es einen Fehler in dem Code-Teil geben sollte, wird

der Fehler im Catch-Block aufgefangen und die ex (als Exception-Klasse) gibt mit ihrer

message-Eigenschaft die Fehlermeldung aus.
Hier mal ein kleines Beispiel
Visual Basic: [code]
Sub _catch_fehler()
Try
Dim i As Integer = 5
Dim x As Integer = 0
Dim y As Integer
y = i / x

Catch ex As Exception
msgbox(ex.message)
End Try
End Sub
[/code]
Wie jeder weiß darf man nicht durch 0 dividieren. Das erkennt hier der Compiler und wirft eine

Fehlermeldung, die dann von unserem Konstrukt aufgefangen wird.

Dieses Beispiel zeigt eine komplexere Fehlerbehandlung
Visual Basic: [code]
Sub _catch_complex_fehler()
Try
Dim pfad As String = "z:text.txt"
Dim text As String = System.IO.File.ReadAllText(pfad)

Catch ex As IO.DriveNotFoundException

Try
Dim pfad As String = "c:text.txt"
Dim text As String = System.IO.File.ReadAllText(pfad)
Catch e As IO.FileNotFoundException
MsgBox(ex.Message)
End Try

Catch
MsgBox("Ein unbekannter Fehler ist aufgetreten")
Finally
MsgBox("Aufräumarbeiten werden erledigt")
End Try
End Sub
[/code]
Wie man sieht werden hier zwei "Fehlersorten" abgefangen, einmal die allgemeinen Fehler (Exception) und dann noch eine spezielle Ausname, die DriveNotFoundException, d.h hier wurde das Laufwerk Z: nicht gefunden. Innerhalb des Catch-Blockes kann wiederum ein Try-Konstrukt mit Code stehen, hier wird jetzt versucht auf C: die Datei zu öffnen, da sie dort nicht vorhanden ist, wird ein FileNotFound Fehler ausgegeben und dieser auch aufgefangen. Bis dahin unbekannte Fehler können mit einem einfachen Catch aufgefangen werden. Zum Schluss kann man noch eine Finally Anweisung hinzufügen, d.h falls ein Fehler auftritt wird auf jeden Fall der Finally-Block ausgeführt. In diesem Block kann man noch "Aufräumarbeiten" erledigen und so zb offene Streams schliessen o.ä.
_________________
 
Neues Thema eröffnen   Neue Antwort erstellen    Visual Basic Forum Foren-Übersicht -> [VB.NET] Tutorials

Tags: visual basic, fehlerbehandlung, vb6, fehler

 
 Verwandte Themen   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Wichtig: [Ebook] jetzt lerne ich Visual Basic 6 2987 02.06.2010, 13:55
Keine neuen Beiträge Miceosoft Visual Basic 6.0 Einsteiger Kurs? 716 17.02.2007, 21:01
Keine neuen Beiträge SUCHE MICROSOFT VISUAL BASIC! 516 12.02.2007, 21:54
Keine neuen Beiträge Microsoft Visual Basic 793 28.01.2007, 00:59
Keine neuen Beiträge Visual Basic.. Version?? 764 22.01.2007, 18:23
 



[ Time: 0.2615s ][ Queries: 81 (0.1043s) ][ GZIP on - Debug on ]