Zum Bleistift so ....
If Kriterium = "" then
Error 32199, "Fehlertext Bla bla bla bla ...."
end if
[...]
Hallo Thomas,
genau das möchte ich ja nicht - eine Fehlernummer mit angeben da ich alle Fehler mit dem definierten Errorhandler abfackeln will.
Der Handler schreibt mir in's Agentenprotokoll was passiert ist.
ErrorHandler:
Call currentLog.LogError( 0, "Der Fehler mit der Nummer" & Str(Err) & " und der Meldung " & Chr$(34) & Error$ & Chr$(34) & " ist bei Zeile " & Str(Erl) & " aufgetreten.")
Call currentLog.Close ' Fehlerprotokoll schließen
End ' Script beenden
Es funktioniert ja auch - ich wüsst nur gern ob's richtig ist... ;)
Gruß
Jens
Hallo
Zu 1.: Das Close musst Du nir aufrufen, wenn Du Dein Script beendest und auch das Log <> null ist.#
D.h. in diesen Schnipsel gehört der Code rein:
ErrorHandler:
Call currentLog.LogError( 0, "Der Fehler mit der Nummer" & Str(Err) & " und der Meldung " & Chr$(34) & Error$ & Chr$(34) & " ist bei Zeile " & Str(Erl) & " aufgetreten.")
Call currentLog.Close ' Fehlerprotokoll schließen
End ' Script beenden
Ansonsten gehört die Zeile raus weil bzw. wenn kein Schreibzugriff stattgefunden hat - richtig?
Zu 2.: Warum einen Fehler provozieren. Du kannst eine If-Abfrage machen, die, wenn die Bedingung erfüllt ist eine Funktion (z.B. WriteToLog (…) ) aufruft. Die selbe Funktion kannst Du auch im ErrorHandling aufrufen.
D.h If address = "" Then Error 0
ist Schwachsinn und sollte heißen If address = "" then ErrorHandler
?
Gruß
Jens
So wie ich Deine Frage verstanden habe, möchtest Du, wenn in einer Mail das Subject nicht bestimmten Konventionen entspricht einen Log-Eintrag vornehmen. Und wie es in jeder ordentlichen Funktion gemacht wird, möchtest Du auch noch eine entsprechende Fehlerbehandlung einbauen.
Ich würde es in etwa (!!) so machen:
Function processSubject( doc as NotesDocument ) as Boolean
On error goto ERROR_ME
…
if doc.HasItem( "Subject" ) Then
sSubject = doc.GetItemValue( "Subject" )(0)
End if
if not isSubjectValid( sSubject ) Then
call printLogEntry( C_NOT_A_VALID_SUBJECT , C_INFO )
End if
processSubject = true
EXIT_ME:
call closeLog
ERROR_ME:
call printLogEntry( C_ERROR_WHILE_VALIDATE_SUBJECT & err & "/" & erl , C_ERROR )
err = 0
Resume EXIT_ME
End Function
..wobei ich die aufzurufenden Funktionen nicht aufschreibe.