Error handlin
lima-city → Forum → Programmiersprachen → Basic
auftreten
beitrag
boxen
catch
checken
connection
display
error
exit
fehler
fehlerbehandlung
instrument
meldung
message
null
number
nchsten zeile
prozedur
resume
trap
-
Hi brauch mal dringend schnell hilfe.
Ich schreibe an einem error handling
Der folgende Code ist nur ein noch nicht fertiges beispiel:
Function Detection
Dim Msg As String 'Turns on the error- trap, so that the error handler responds, if any error is detected
On Error GoTo CheckError
FileExists = (Dir(filename) <> "")
Exit Function
CheckError:
'lists the errors which can occur (you can use Select case or If...then...else)
Const mnErrConnection = E.num, mnErrwrongadress = E.num
If (E.num = mnErrConnection) Then
Msg = "Error number xx occured. The connection failed! Check if the instrument is connected with your computer."
' This displays a message box with an OK and a Cancel button
If MsgBox (Msg, vbExclimation & vbOKCancel) = vbOK Then
Resume
Else
Resume Next
End If
Elseif E.num = mnerrwrongadress Then
Msg = "Error number xx occured. The connection failed!A wrong adress has been used. Check the adress of the instrument."
If MsgBox (Msg, vbExclimation & vbOKCancel) = vbOK Then
Resume
Else
Resume
' Continue with Elseif...as many errors you have. they have to be set as a constant before
Else
Msg = "### An unknown error occured! ###"
MsgBox Msg, vbCritical
Stop
' displays message box with a stop sign
End If
Resume
End Function
Frage: Was mache ich wenn ich sehr viele Errors habe aber zu faul bin für jeden einzelnen Error ein Elseif zu schreiben. Wisst ihr wie ich so ne art grundnachricht code.. bei der sich die errornummer und Beschreibung einfügen lässt?
MFG
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
"Dringend schnell Hilfe" gibts nicht!
Deine Fehlerbehandlung ist viel zu umständlich.
Hier zwei Beispiele:
1. Fehlerbehandlung mit Systembeschreibungen der Fehler
Private Sub Test1() On Error GoTo ErrorHandler 'Hier steht der Code, bei dem ein Fehler auftreten kann... Dim a As Integer Dim b As Integer a = 4 / 0 b = 4 * 2 MsgBox b Exit Sub ErrorHandler: Select Case MsgBox("Folgender Fehler ist aufgetreten:" & vbNewLine & Err.Description & vbNewLine & vbNewLine & "Wie möchten Sie reagieren?", vbAbortRetryIgnore Or vbCritical, "Fehlerbehebung") Case vbCancel, vbAbort 'Vorgang abbrechen. Exit Sub Case vbIgnore 'Vorgang fortsetzen in der nächsten Zeile. Resume Next Case vbRetry 'Nochmals die gleiche Zeile versuchen. Resume End Select End Sub
2. Fehlerbehandlung mit eigenen Nachrichten
Private Sub Test2() On Error GoTo ErrorHandler 'Hier steht der Code, bei dem ein Fehler auftreten kann... Dim a As Integer Dim b As Integer a = 4 / 0 b = 4 * 2 MsgBox b Exit Sub ErrorHandler: Dim Meldung As String Select Case Err.Number Case 11: Meldung = "Teilen durch Null ist nicht erlaubt." Case Else: Meldung = "Sonstiger Fehler." End Select Select Case MsgBox("Folgender Fehler ist aufgetreten:" & vbNewLine & Meldung & vbNewLine & vbNewLine & "Wie möchten Sie reagieren?", vbAbortRetryIgnore Or vbCritical, "Fehlerbehebung") Case vbCancel, vbAbort 'Vorgang abbrechen. Exit Sub Case vbIgnore 'Vorgang fortsetzen in der nächsten Zeile. Resume Next Case vbRetry 'Nochmals die gleiche Zeile versuchen. Resume End Select End Sub
(Beide Codes gelten für VB 6.
Unter VB .Net gibt es eine wesentlich vereinfachte Methode: Try...Catch...End Try)
cbhp
Beitrag geändert: 10.7.2007 14:26:11 von cbhp -
Was ich noch nicht so ganz verstehe ist was man in die Error trap reingiebt...
kann das jeglicher Code sein, bei dem ein Fehler auftreten kann?
z.B. auch eine Procedure... --> Call ?? -
Es gibt verschiedene Möglichkeiten, einen Fehler auszulösen.
Zum Beispiel explizit aufrufen mit "Err.Raise(11)"
In meinem Beispielcode oben wird eine Division durch Null gestartet, was auch zu einem Fehler führt.
Auch falls eine Datei nicht vorhanden ist tritt ein Fehler auf...
Wenn du eine Prozedur aufrufst und innerhalb der aufgerufenen Prozedur keine Fehlerbehandlung eingebaut ist, wird der Fehler an die übergeordnete Prozedur übergeben. -
Hi,
mach doch einfach folgendes:
\'1. Quellcode - Fehler anzeigen:
Dim ErrString as String
Try
\'...Dein Quellcode...
Catch err as Exception
\'Fehler in Variable speichern
ErrString = err.ToString()
\'Fehlermeldung anzeigen
MessageBox.Show(ErrString)
End Try
\'2. Quellcode - Bei Fehler goto...:
Try
\'...Dein Quellcode...
Catch err as Exception
Goto CheckError
End Try
Beitrag geändert: 21.9.2007 14:57:15 von lccserver -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage