Domino 9 und frühere Versionen > ND6: Entwicklung
Probleme beim Errorhandling
Ralf_M_Petter:
Hallo!
Ich habe folgendes Problem, bei dem ich offensichtlich etwas übersehe. Ich habe einen Agent, der eine mail an eine ganze Liste von Mitarbeitern sendet. Wenn jedoch einer dieser Mitarbeiter nicht mehr im Adressbuch gerführt wird, dann bricht der Agent einfach ab. Ich möchte nun gerne mit On Error Goto diesen Fehler abfangen. Leider funktioniert das aber irgendwie nicht richtig.
Habe jetzt mal folgenden Code zum testen schnell reingeklopft, um nicht den richtigen Agenten hier reinstellen zu müssen.
--- Code: ---Dim ses As New Notessession
Dim doc As NotesDocument
Dim cdb As NotesDatabase
Set cdb=ses.currentdatabase
Set doc=cdb.CreateDocument
On Error Goto Fehler
doc.form="Memo"
doc.sendTo="Franz Forster/Artweger/AT" 'Diese Person gibt es nicht bei uns im Adressbuch
doc.subject="Test"
Call doc.Send(False)
Print "Test"
Exit Sub
Fehler:
Print Err
Resume Next
--- Ende Code ---
Meines Verständnis nach sollte er bei der Anweisung doc.send(False) in die Fehlerbehandlungsroutine gehen und die Fehlernummer ausgeben und dann mit der nächsten Anweisung fortfahren. Leider tut er das aber nicht, ich bekomme stattdessen folgende Ausgabe:
Agent 'Test' wurde am 19.10.2005 09:45:19 gestartet
Mail konnte nicht an CN=Franz Forster/O=Artweger/C=AT gesendet werden, da kein entsprechender Name in den Adressbüchern gefunden wurde
LotusScript Code ausgeführt
Agent 'Test' wurde am 19.10.2005 09:45:19 beendet
Kann mir mal jemand auf die Sprünge helfen, wo ich da einen Denkfehler habe.
Grüße
Ralf
Axel:
Hi,
meines Erachtens kannst du das nicht mit der "normalen" Fehlerbehandlung (On Error Goto...) abhandeln, da du ja in das SendTo-Feld auch eine externe Mail-Adresse eintragen kannst und die ist ja auch nicht im Adressbuch vorhanden. Der "Fehler" kommt ja dann auch erst in Form einer Zustellfehlermeldung, wenn es die Adresse nicht gibt.
Du müsstest jede Adresse manuell z.B. über GetDocumentByKey prüfen ob sie im Adressbuch vorhanden ist.
Axel
DerAndre:
Hmmm.
Wo willst Du wieder Aufsetzen. Da muss dann ein
AbHierWeiter:
hin und aus dem Resume Next am Ende wird:
Resume AbHierWeiter
Steht zumindest in der Hilfe...
Und das On Error Goto würde ich direkt hinter die Dim´s setzen.
Gruss
André
Ralf_M_Petter:
Hallo!
@Der Andre! Danke das du helfen willst, aber welche Hilfe liest du da. In der Hilfe steht wenn man Resume Next sagt macht er mit dem nächsten Statement weiter, nach dem der Fehler aufgetreten ist.
@Axel
Danke für deinen Hinweis. Aber es ist nicht so, dass dieser Fehler ein normaler Zustellfehler als mail ist sondern es ist ein Abbruchfehler der als Dialogbox angezeigt wird. Ok, sorry war mein Fehler, es hat eh alles funktioniert. Mein Fehler war nur, dass ich übersehen habe, dass Print Anweisungen im Ergebnis des Agenten nicht angezeigt werden. Das war mir neu.
Also Danke für alle die geantwortet haben.
Grüße
Ralf
DerAndre:
Ich such ganz Normal in der Designer Hilfe.
Such mal nach
Multiple On Error statements
Also, du hast kein On Error Next in deinem Code stehen, also kann er auch kein Resume Next machen, woher soll Notes das wissen.
Ergo:
Dim ses As New Notessession
Dim doc As NotesDocument
Dim cdb As NotesDatabase
On Error Goto Fehler
MachHierWeiter:
Set cdb=ses.currentdatabase
Set doc=cdb.CreateDocument
doc.form="Memo"
doc.sendTo="Franz Forster/Artweger/AT" 'Diese Person gibt es nicht bei uns im Adressbuch
doc.subject="Test"
Call doc.Send(False)
Print "Test"
Exit Sub
Fehler:
Print Err
Resume MachHierWeiter:
Das sollte dann auch laut der Hilfe klappen. Wenn nicht hab ich was falsch verstanden, oder in der Hilfe ist ein Bug ;)
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln