Domino 9 und frühere Versionen > Entwicklung
doc.Responses kann nothing retunieren?
Marinero Atlántico:
Hi,
laut Doku und meiner Erfahrung gibt
doc.Responses eine leere NotesDocumentCollection zurück, wenn das Dokument keine Antwortdokumente hat.
Nun hat es aber offenbar einen Fall gegeben, wo es nothing zurückgegeben hat, so dass:
--- Code: ---colMy = docResponses
if colMy.count > 0 then
' und_so_weiter
--- Ende Code ---
in eine ObjectVariableNotSet terminierte (in colMy.count).
Man kann da einen Nothing-check machen, was ich in Zukunft auch zu tun gedenke:
--- Code: ---colMy = docResponses
if not colMy is Nothing then
if colMy.count > 0 then
' und_so_weiter
--- Ende Code ---
Habt ihr sowas schon mal erlebt ??? Ist das normal ?
Ist theoretisch nicht auszuschliessen, dass jemand ein bischen am code gedreht hat, was ich aber nicht glaube.
Wo wir gerade dabei sind. Kann man das eigentlich zusammenziehen?
In Java ist das so das so:
--- Code: ---if ((false) && (x.val ==4))
--- Ende Code ---
Wenn die erste Bedingung falsch ist, wird die 2. gar nicht mehr ausgeführt.
Bei dem nächsten Beispiel werden beide ausgeführt auch wenn die erste false ergibt (nur 1 & und oben &&:
--- Code: ---if ((false) & (x.val ==4))
--- Ende Code ---
Ist das "AND" in Lotus Script wie "&&" oder wie "&" in Java?
also
--- Code: ---colMy = docResponses
if (not colMy is Nothing) AND (colMy.count > 0) then
--- Ende Code ---
wäre nothing-safe, weil der 2. Term gar nicht mehr berechnet wird, wenn der 1. false zurückgibt?
[zunehmend_out_of_topic/]
langsam verstehe ich, dass die Vehemenz, mit der manche Leute letztes Jahr in Java auf das NullObjectPattern hingewiesen haben, einen ernsten Hintergrund hat.
Axel
Glombi:
Ohne jetzt spezifisch auf Dein erstes Problem einzugehen, habe ich Unterschiede zwischen R5 und R6 festgestellt. Ich hoffe es zu finden und würde es dann posten.
Deinen Fall kann ich morgen mal mit R5 und R6 testen (sofern mir keiner hier zuvorkommt) und dann das Ergebnis posten.
Bzgl. der Auswertungsreihenfolge von if muss ich mal schauen, so aus dem Stehgreif weiss ich es erlich gesagt nicht.
Andreas
koehlerbv:
Kurze Antwort - hoffentlich trotzdem vollständig:
--- Code: ---colMy = docResponses
--- Ende Code ---
docResponses müsste ja schon eine NotesDocumentCollection sein. Wenn sie erst gebildet wird, muss es doc PUNKT Responses heissen.
Und ja: Sowas sollte man immer abfangen. Lieber hundertmal mehr als einmal zuwenig.
Und weiterhin ja: Du kannst mit AND wie in Java zusammenfassen. Sowie eine Bedingung in der Abarbeitungsreihenfolge nicht stimmt, wird abgebrochen.
Bernhard
Glombi:
Das heisst, der Interpretor geht von links nach rechts und wertet erstmal jede Condition aus? Bei False wird dann abgebrochen? Das wäre aber nur bei AND sinnvoll.
Andreas
Marinero Atlántico:
--- Zitat von: koehlerbv am 16.02.05 - 20:57:47 ---docResponses müsste ja schon eine NotesDocumentCollection sein. Wenn sie erst gebildet wird, muss es doc PUNKT Responses heissen.
--- Ende Zitat ---
Sorry. Typoe.
Ich kenne die Bedeutung von . ;D
Also es ist wie && in Java (nicht &). Heisst "short circuit binary operator" oder so ähnlich.
Ich meinte auch sowas gehört zu haben, dass es wie "&&" ist.
Das macht nur bei AND Sinn. Bei checks auf nothing oder null ist das aber tendentiell praktisch.
Ich bin auch dafür so was generell abzuchecken. Ich denke, dass ich das normalerweise abchecke.
Der Nutzen von sichereren code ist hier auf jeden Fall höher als die Kosten von "macht es ein bischen unübersichtlicher".
Axel
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln