LabVIEWForum.de - Error Handling

LabVIEWForum.de

Normale Version: Error Handling
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo LVF!

Mein Errorhandling sieht zur Zeit so aus:
[attachment=15222]

Wollte nun fragen ob es OK ist und wie ihr es macht.

Danke, eg
' schrieb:Wollte nun fragen ob es OK ist und wie ihr es macht.

Ich finde das OK und mache das auch in etwa fast immer so, meistens sind es ja dann mehrere While-Schlaufen.
Was ich anders mache, die Queue ist ein Enum (TypeDef.)

Was ist, wenn der ErrorHandler, aus welchen Gründen auch immer, bei Queue (Error) absetzen selber ein Fehler macht? (nur so theoretisch)
Das wird nicht mehr abgefangen, den der Error Handler selbst ist sehr einfaches Stück, wo eigentlich keine Fehler auftreten können. Aber wenn, dann wird halt nichts passieren.
' schrieb:Das wird nicht mehr abgefangen, den der Error Handler selbst ist sehr einfaches Stück, wo eigentlich keine Fehler auftreten können.
deshalb, theoretisch

' schrieb:Aber wenn, dann wird halt nichts passieren.

eben ... kein Fehler und kein Exit
' schrieb:deshalb, theoretisch
eben ... kein Fehler und kein Exit

Ich will kein Exit machen, wenn ein Fehler auftritt - das ist Absicht.

Wie machst du es im Prinzip? Ich lerne gerne was dazu Wink
' schrieb:Ich will kein Exit machen, wenn ein Fehler auftritt - das ist Absicht.

Wie machst du es im Prinzip? Ich lerne gerne was dazu Wink
ich denke, da gibt es nichts dazu zu lernen Rolleyes

Ich mache es ja genau gleich, nur sende ich halt, je nach Anwenungsfall, ein Exit.
Ist ja nur therotisch, weil ich, wie du, davon ausgehe, dass der ErrorHandler selber keinen Fehler machen soll/kann.

... aber mit einem SR wäre auch das Problem fast gelöst, oder nicht.
' schrieb:Mein Errorhandling sieht zur Zeit so aus:
Ich gehe mal davon aus, du meinst das allgemeine Verfahren. Also Statemachine etc. in While-Schleife. Nach jedem State, also nach jeder Arbeit, wie immer die aussieht und wie immer die auch initialisiert wird, wird eine Fehlerüberwachung/Auswertung/Anzeige etc. gemacht. Es ist zu beachten, dass in so einem Case ein Programm stehen kann, das selbst aus sehr vielen Programmebenen (SubVIs) bestehen kann. Deren Error-Cluster würden alle bis hier oben durchgeführt.

Zitat:Wollte nun fragen ob es OK ist
Datenflusstechnisch gesehen spricht nichts dagegen. Auch vom Ablauf her würde man so vorgehen: Arbeiten, Fehler tritt auf, Fehler wird gehandelt (wie auch immer LogFile, Anzeige etc).

Zitat:und wie ihr es macht.
Ich mach das aber anders.

Meine Programme sind nicht so strukturiert, dass ich am Ende einer Arbeit auf Fehler prüfe. Ich prüfe erst auf Fehler und mach dann die Arbeit. Beispiel Dateiename. Der Anwender hat z.B. einen Pfad als Zielpfad für Messwertfiles definiert. Es gibt jetzt zwei Möglichkeiten: Ich schreib die Messwertdatei und lasse quasi online prüfen, ob der Pfad existiert. Existiert der Pfad nicht, bekomm ich einen Fehler (hoffe ich doch). Oder ich überprüfe zuerst ob der Pfad existiert. Wenn nicht, fang ich erst gar nicht mit der Arbeit an.

Mit diesem Verfahren fange ich theoretisch alle vorhersehbaren (praktisch die vorhergesehenen) Fehler ab. Beliebte derartige Fehler sind z.B. ungültige Benutzereingaben oder Dateninkonsistenzen im allgemeinen. Normalerweise treten jetzt also gar keine Fehler mehr auf.

Bleiben also nur noch die unvorhersehbaren Fehler übrig. Solche Fehler sind z.B. "Handle ist plötzlich verschwunden". Eigentlich muss man einen derartigen Fehler aber gar nicht direkt auswerten - der Overhead hierfür steht in keinem Verhältnis zur Auftret-Häufigkeit dieses Fehlers.

In textbasierter Programmierung gehe ich im übrigen genauso vor. Das Verfahren Error-Auswertung nach der Arbeit würde einem try/except-Konstrukt entsprechen. Sowas verwende ich aber normalerweise nicht.

So. Was sagt ihr denn dazu?
' schrieb:Der Anwender hat z.B. einen Pfad als Zielpfad für Messwertfiles definiert. Es gibt jetzt zwei Möglichkeiten: Ich schreib die Messwertdatei und lasse quasi online prüfen, ob der Pfad existiert. Existiert der Pfad nicht, bekomm ich einen Fehler (hoffe ich doch). Oder ich überprüfe zuerst ob der Pfad existiert. Wenn nicht, fang ich erst gar nicht mit der Arbeit an.

Dazu nutze ich die Option "existing path only", hat aber nichts mit dem zu tun. Das Prinzip habe ich verstanden. Sehr oft mache ich es auch so und manchmal sogar z.B. erstele den Pfad selbst, falls nicht existent. Wenn aber dann immer noch etwas nicht stimmt, dann wird der Fehler ausgewertet. Übrigens mein Error-Handler macht kein Dialog auf, sondern schickt den Fehler zur Anzeige am Main FP.
Referenz-URLs