Domino 9 und frühere Versionen > ND6: Entwicklung

Probleme beim Errorhandling

(1/2) > >>

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