Autor Thema: Probleme beim Errorhandling  (Gelesen 2396 mal)

Offline Ralf_M_Petter

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.879
  • Geschlecht: Männlich
  • Jeder ist seines eigenen Glückes Schmied
    • Ralf's Blog
Probleme beim Errorhandling
« am: 19.10.05 - 09:44:16 »
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

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
« Letzte Änderung: 19.10.05 - 11:13:10 von Ralf_M_Petter »
Jede Menge Tipps und Tricks zu IT Themen findet Ihr auf meinem Blog  Everything about IT  Eine wahre Schatzkiste sind aber sicher die Beiträge zu meinem Lieblingsthema Tipps und Tricks zu IBM Notes/Domino Schaut doch einfach mal rein.

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Probleme beim Errorhandling
« Antwort #1 am: 19.10.05 - 09:53:51 »
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
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline DerAndre

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.655
  • Geschlecht: Männlich
  • Keep cool!
Re: Probleme beim Errorhandling
« Antwort #2 am: 19.10.05 - 09:55:20 »
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é
« Letzte Änderung: 19.10.05 - 09:57:36 von DerAndre »
André

Elterninitiative diabetischer Kinder und Jugendlicher e.V.
-----------------------------------------------------------------------------
Fliegen ist die Kunst auf den Boden zu Fallen, aber daneben.
-----------------------------------------------------------------------------
Etwas mehr Hardware dazu zu kaufen ist viel billiger als
Software besser zu machen. ( Niklaus Wirth )

Offline Ralf_M_Petter

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.879
  • Geschlecht: Männlich
  • Jeder ist seines eigenen Glückes Schmied
    • Ralf's Blog
Re: Probleme beim Errorhandling
« Antwort #3 am: 19.10.05 - 10:26:22 »
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


Jede Menge Tipps und Tricks zu IT Themen findet Ihr auf meinem Blog  Everything about IT  Eine wahre Schatzkiste sind aber sicher die Beiträge zu meinem Lieblingsthema Tipps und Tricks zu IBM Notes/Domino Schaut doch einfach mal rein.

Offline DerAndre

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.655
  • Geschlecht: Männlich
  • Keep cool!
Re: Probleme beim Errorhandling
« Antwort #4 am: 19.10.05 - 10:55:47 »
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  ;)
André

Elterninitiative diabetischer Kinder und Jugendlicher e.V.
-----------------------------------------------------------------------------
Fliegen ist die Kunst auf den Boden zu Fallen, aber daneben.
-----------------------------------------------------------------------------
Etwas mehr Hardware dazu zu kaufen ist viel billiger als
Software besser zu machen. ( Niklaus Wirth )

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: Probleme beim Errorhandling
« Antwort #5 am: 19.10.05 - 11:08:55 »
Ich glaub diesen FEhler kannst du gar nicht im LotusScript abfangen. Meine mich da irgendwie zu erinnern (?). Das eigentliche Senden der Mail ist glaub ich (?) asynchron und läuft nachdem das Script gelaufen ist.
Du kannst vielleicht vorher die Liste gegen das NAB testen.

Axel
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline Ralf_M_Petter

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.879
  • Geschlecht: Männlich
  • Jeder ist seines eigenen Glückes Schmied
    • Ralf's Blog
Re: Probleme beim Errorhandling
« Antwort #6 am: 19.10.05 - 11:09:16 »
Wie ich schon gesagt habe, das was du schreibst ist nicht richtig, ich poste hier mal die Designer Hilfe damit wir vom selben reden.

Beispiel
Directs LotusScript to resume script execution at a particular statement in a script, after an error has occurred.
Syntax
Resume [ 0 | Next | label ]
Elements
0
Resumes execution at the statement that caused the current error.
Next
Resumes execution at the statement following the statement that caused the current error.
label
Resumes execution at the specified label.
Usage
Use the Resume statement only in error-handling routines; once LotusScript executes the Resume statement, the error is considered handled.
Resume continues execution within the procedure where it resides. If the error occurred in a procedure called by the current procedure, and the called procedure didn’t handle the error, then Resume assumes that the statement calling that procedure caused the error:
Resume
  • directs LotusScript to execute again the procedure-calling statement that produced the error.

Note that this may result in an infinite loop, where in every iteration, the procedure generates the error and then is called again.
Resume Next directs LotusScript to resume execution at the statement following the procedure call.
The Resume statement resets the values of the Err, Erl, and Error functions.

Wenn du also Resume 0 sagst, probiert er das fehlerhafte Statement erneut. z.B. du hast in der Fehlerroutine eine Dialogbox angezeigt die auffordert eine Diskette in Lauferk A einzulegen.
Mit Resume Next kannst du das fehlerhafte Statement überspringen. Das ist in meinem Fall sinnvoll weil ich will das der Agent die weiteren Schritte macht, auch wenn er das Mail nicht senden kann.
Resume label ist das was du beschrieben hast.

Hoffe jetzt ist alles klar.

Grüße

Ralf
Jede Menge Tipps und Tricks zu IT Themen findet Ihr auf meinem Blog  Everything about IT  Eine wahre Schatzkiste sind aber sicher die Beiträge zu meinem Lieblingsthema Tipps und Tricks zu IBM Notes/Domino Schaut doch einfach mal rein.

Offline Ralf_M_Petter

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.879
  • Geschlecht: Männlich
  • Jeder ist seines eigenen Glückes Schmied
    • Ralf's Blog
Re: Probleme beim Errorhandling
« Antwort #7 am: 19.10.05 - 11:11:35 »
Hallo Axel J.

Nein das ist nicht korrekt wie ich oben bereits geschrieben habe, kann man das sehr wohl abfangen. Das einzige was ich nicht gewusst habe ist dass Print Anweisung in der Zusammenfassung des Agenten nicht angezeigt werden. Wenn man ihn über Starten aufruft. Nach dem ich das Script debuggt habe, habe ich gesehen das alles richtig läuft.

Grüße

Ralf
Jede Menge Tipps und Tricks zu IT Themen findet Ihr auf meinem Blog  Everything about IT  Eine wahre Schatzkiste sind aber sicher die Beiträge zu meinem Lieblingsthema Tipps und Tricks zu IBM Notes/Domino Schaut doch einfach mal rein.

Offline DerAndre

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.655
  • Geschlecht: Männlich
  • Keep cool!
Re: Probleme beim Errorhandling
« Antwort #8 am: 19.10.05 - 11:22:25 »
Hi Ralf.

Jo, Du hast Recht...

Diese Agenten sind wirklich nicht sehr gesprächig. Prints sollten sich in der log.nsf wiederfinden, da bin ich mir aber nicht 100% sicher.

Ich glaub ich mach im Moment zuviel PL/SQL und VB  :P

Gruss

André
André

Elterninitiative diabetischer Kinder und Jugendlicher e.V.
-----------------------------------------------------------------------------
Fliegen ist die Kunst auf den Boden zu Fallen, aber daneben.
-----------------------------------------------------------------------------
Etwas mehr Hardware dazu zu kaufen ist viel billiger als
Software besser zu machen. ( Niklaus Wirth )

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Probleme beim Errorhandling
« Antwort #9 am: 19.10.05 - 11:43:02 »
Das ist richtig: Bei vom Server ausgeführten Agents landen Ausgaben via Print (wie auch Ausgaben per Messagebox) im Log. Laufen die Agents auf dem Client, werden Print-Statements in der Statuszeile ausgegeben.

Bernhard

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz