Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
Wenn die automatische Fehlerbehandlung aktiviert ist, dann wird beim Freigeben der Melderreferenz von LabVIEW eine Fehlermeldung ausgegeben. Mit dem Fehler, der über den Melder verschickt wurde. Wird die letzte Meldung mit einer Anzeige verbunden, dann bleibt die Meldung von LabVIEW aus.
Ich hab hier nur LabVIEW 2015.f02 32-bit.
Ich hätte gedacht, die letzte Meldung wird einfach unter drückt, wie bei anderen Meldungen auch.
13.05.2016, 14:15 (Dieser Beitrag wurde zuletzt bearbeitet: 13.05.2016 14:16 von jg.)
Hat ein wenig gedauert, bis ich verstanden habe, worauf du hinaus willst, aber ich halte das für ein korrektes Verhalten von LabVIEW und keinen Bug.
Bei Aktivierung der Option "Enable automatic error handling dialogs" wird JEDER Ausgang eines VIs, der einen Error-Cluster mit Fehler enthält und nicht verbunden ist, bei Auftreten eines Fehlers einen Dialog auslösen.
Da "Release Notifer" in deinem Bsp einen solchen unverbundenen Error-Ausgang enthält, tritt das spezifizierte Verhalten auf.
Gruß, Jens
EDIT: Deshalb aus "LabVIEW Bug Liste" verschoben nach "LabVIEW Allgemein"
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
Jetzt, da das Posting keine Aussage von wladimir s mehr darstellt, sondern eine Frage, kann ich meine Kommentare ja schreiben:
(13.05.2016 09:08 )wladimir s schrieb: Wenn die automatische Fehlerbehandlung aktiviert ist, dann wird beim Freigeben der Melderreferenz von LabVIEW eine Fehlermeldung ausgegeben.
Im Allgemeinen ist das von LV ja auch so gewollt. Dieses Verhalten hat im Allgemeinen aber nichts damit zu tun, dass die Quelle des Fehlers ein Melder-Element ist. Diese "automatische Meldung" besagt ja nur, dass innerhalb des Elementes (hier zufällig ein Melder-Element mit Errorcluster als Datentyp) ein Fehler aufgetreten ist.
Zitat:Wird die letzte Meldung mit einer Anzeige verbunden, dann bleibt die Meldung von LabVIEW aus.
Dieses Verhalten sagt mir, dass es sich tatsächlich um die "automatische Fehlerbehandlung" handelt.
Zitat:Mit dem Fehler, der über den Melder verschickt wurde.
Das jedoch ist tatsächlich nicht so schön: Das muss wohl daran liegen, dass der Melder so intelligent ist, am Fehlerausgang den Wert des Datentyps auszugeben, wenn denn der Datentyp "Error-Cluster" heißt. Ob das zielführend ist?
Zitat:Ich hätte gedacht, die letzte Meldung wird einfach unter drückt, wie bei anderen Meldungen auch.
Scheint wohl am Datentyp des Melders zu liegen ...
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Zitat:Mit dem Fehler, der über den Melder verschickt wurde.
Das jedoch ist tatsächlich nicht so schön: Das muss wohl daran liegen, dass der Melder so intelligent ist, am Fehlerausgang den Wert des Datentyps auszugeben, wenn denn der Datentyp "Error-Cluster" heißt. Ob das zielführend ist?
Nein, dem ist NICHT so! Die Meldung wird durch den unverbundenen Ausgang "Last Notification" am Ausgang von Release Notifier erzeugt. Zur Verdeutlichung: Das folgende Bsp erzeugt 2 Dialoge (1x von "Get Notifier", 1x von Relase Notifier)
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
Ich habe bis jetzt gedacht, das die automatische Fehlerbehandlung nur auf die Fehleranschlüsse in den mitgelieferten VIs reagiert. Wieder was dazugelernt.
(13.05.2016 15:08 )wladimir s schrieb: Ich habe bis jetzt gedacht, das die automatische Fehlerbehandlung nur auf die Fehleranschlüsse in den mitgelieferten VIs reagiert. Wieder was dazugelernt.
Klar kann man das denken. Ganz ehrlich, ich hätte das im ersten Moment auch vermutet. ABER: Wie soll man es wesentlich anders umsetzen, als auf alle nicht verbundenen Fehlerausgänge zu reagieren? Woher soll bei mehr als einem Ausgang mit Datentyp Error LabVIEW wissen, welches jetzt der wahre "Error-Ausgang" ist? Die Logik, die man sich dann programmieren darf, steht im keinen Verhältnis. Und komm nicht mit "Error-Ausgang" ist der rechts unten im Connector-Pane. Das ist zwar eine Empfehlung, aber kein MUSS.
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
(13.05.2016 17:26 )jg schrieb: Wie soll man es wesentlich anders umsetzen, als auf alle nicht verbundenen Fehlerausgänge zu reagieren?
Ich hab mir die ganze Sache nochmals angekuckt. Es gefällt mir trotzdem nicht.
Ein Cluster gilt ja alleine schon deswegen als "LabVIEW-spezifische Type Error-Cluster", wenn die Reihenfolge der Cluster-Elemente "Boolean, I32, String" heißt. Wenn ich also einen applikationsspezifischen, strict-typisierten Cluster aus den Typen "Boolean, I32, String" (diese Reihenfolge) habe, ist dieser Typ, der gar nichts mit Fehlern zu tun haben soll, automatisch ein Error-Cluster. Ich will gar nicht weiter darüber nachdenken, was dieses implizite Verhalten noch für weitere negative Auswirkungen hat.
Da hätte ich von den LabVIEW-Entwicklers aber etwas mehr Ehrgeiz erwartet: Error-Cluster strict typisiert und nur die von diesem Typ instanzierten Ausgänge werden bei der automatischen Fehlerbehandlung berücksichtigt.
Auf jeden Fall hat LabVIEW schon noch Verbesserungs-Potential für die nächsten Jahre.
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
14.05.2016, 15:24 (Dieser Beitrag wurde zuletzt bearbeitet: 14.05.2016 15:40 von BNT.)
(13.05.2016 21:16 )IchSelbst schrieb: Auf jeden Fall hat LabVIEW schon noch Verbesserungs-Potential für die nächsten Jahre.
Ich schlage vor, dass der Error Cluster als Klasse implementiert wird. Mit einer der kommenden LabVIEW Versionen könnte eine automatische Konversion beim Upgrade durchgeführt werden. Damit könnte der Anwender auch ein dynamic dispatch VI, z.B. Handle Error.vi, überschreiben und darin geeignet Maßnahmen ergreifen. Damit könnte ein Error Handler deutlich generischer gestaltet werden. Vielleicht wird ja doch noch irgendwann ein Exception-Handling Konzept wie in Java auch in LabVIEW eingeführt.
Ich habe das echo einigen NI-Kollegen vorgeschlagen und auch einen Beitrag im LabVIEW Idea Exchange gepostet. Das Thema scheint aber nicht vielen LabVIEW Programmierern wirklich wichtig zu sein.
Hätte jemand Lust, an einen Workshop zum Thema Fehlerbehandlung teilzunehmen? Ich würde mich glatt bereit erklären, einen solchen zu organisieren.
Diese Diskussion ist aber eigentlich ein anderes Thema und kann von den Moderatoren gern in einen anderen Thread verschoben werden.