04.02.2010, 10:47
Beitrag #1
|
|
|
06.02.2010, 10:07
Beitrag #2
|
Y-P
☻ᴥᴥᴥ☻ᴥᴥᴥ☻
Beiträge: 12.612
Registriert seit: Feb 2006
Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN
71083
Deutschland
|
Exception "Catch"
rolfk oder IchSelbst bestimmt.....
Gruß Markus
--------------------------------------------------------------------------
Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
|
|
|
06.02.2010, 14:03
Beitrag #3
|
IchSelbst
LVF-Guru
Beiträge: 3.692
Registriert seit: Feb 2005
11, 14, 15, 17, 18
-
DE
97437
Deutschland
|
Exception "Catch"
Vorab:
Exceptions sind Elemente, mit denen ich mich nicht befasse. Sie dienen zum Abfangen von unvorhersehbaren (das sind per se unvermeidbare Fehler) und unverhergesehenen (das sind per se vermeidbare Fehler, daher solche, die nicht auftreten sollten) Fehlern. Da ich letzteren Typ grundsätzlich vermeide, brauch ich Exceptions nicht, weder in LV noch in Delphi. Vermeiden geht ganz einfach: Vor der Division abfragen, ob der Divisor Null ist.
' schrieb:Es ist nun so, dass die Exception ja eine Klasse ist, (in meinem Fall eine "DummyException").
Ja. Da gebe ich dir recht.
Nur: Was willst du in LV auf Anwenderebene mit Exceptions? Du würdest dann einen Exceptionhandler brauchen, der aber in ein Datenflußprinzip nicht integrierbar wäre.
Wolltest du in einer tieferen Ebene irgendwas beeinflussen, z.B. das Generieren von Error(cluster)-Meldungen, - dann geht das aber schon ins Eingemachte. Sowas mach ich nicht mehr. RolfK kennt sich da bestimmt noch aus.
Zitat:Diese hat wieder Funkionen zur Verfügen, auf die ich zugreifen möchte.
Was ich von Delphi und seinen Exceptions so weiß, ist das nicht besonders viel, was so eine Exception-Class ausmacht. Wie du in LV oder gar .Net an die Methoden der Klasse kommst, weiß ich nicht. Und sowas wie ein OnException in LV auf Anwenderebene zu integrieren, ist bestimmt auch nicht trivial.
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
|
|
|
07.02.2010, 21:39
Beitrag #5
|
DaniH
LVF-Neueinsteiger
Beiträge: 9
Registriert seit: Oct 2009
2009
2009
en
9400
Deutschland
|
Exception "Catch"
Hallo,
Besten Dank für eure Informationen.
Mein System sieht so aus, dass unterhalb meiner .net dll mehrere Gerät angesprochen werden. (Es wird über RS232 kommuniziert)
Diese Geräte können in diverse Fehlerzustände kommen. Z.b. eine Übertemperatur.
Fehler also, die man nicht verhindern kann.
Die Idee ist, dass man das gesamte Fehlerhandling über Exception macht.
Die Exception sind in meinem Fall keine unvorhersehbare Fehler, sondern einfach Fehler die im System auftretten können.
(Gem. meinem Kollegen ist das in der C#/.net Welt so üblich, oder fast ein muss!)
Die Fehler sollen natürlich soweit wie möglich in der dll behandlet werden.
Das Beispiel der Übertemperatur soll jedoch an LabVIEW, (was nur ein GUI darstellt) weitergereicht werden.
So kann der Anwender darauf reagieren, in dem er z.B. das Gerät abschaltet.
Die Exception die in der Dll ausgeworfen wird, ist von der Klasse "Exception" abgleitet, und enthält noch zusätzliche Methonden.
Über dies kann man an weiter Informationen herankommen, wie zum Beispiel, welches Gerät hat den Fehler erzeugt, Zeit, Fehlernummer... u.s.w.
Wie ich aus euren Antworten herauslesen, ist es von LabVIEW (oder grundsätzlicht?) nicht so angedacht, dass man ein Fehlerhandlig mit Exceptions löst. Sondern eher, dass wenn man einen unvorhergesehen Fehler mit dem eigenen Fehlerhandlich nicht abgefangen hat,
man durch die Exception darauf aufmerksam gemacht wird um dies noch nachzuholen.
Besteb Dank!
Dani
|
|
|
07.02.2010, 23:12
Beitrag #6
|
IchSelbst
LVF-Guru
Beiträge: 3.692
Registriert seit: Feb 2005
11, 14, 15, 17, 18
-
DE
97437
Deutschland
|
Exception "Catch"
' schrieb:Diese Geräte können in diverse Fehlerzustände kommen. Z.b. eine Übertemperatur. Fehler also, die man nicht verhindern kann.
Eine Übertemperatur ist kein Fehler, sondern ein Zustand, der explizit beachtet werden muss. Eine Übertemperatur kann man mit ganz normalen Funktionen handeln.
Zitat:Die Exception sind in meinem Fall keine unvorhersehbare Fehler, sondern einfach Fehler die im System auftretten können.
Aber doch keine Fehler im System (z.B.) Klimaschrank !
Zitat:(Gem. meinem Kollegen ist das in der C#/.net Welt so üblich, oder fast ein muss!)
Naja, bisher programmiere ich nur in Win32 und in LabVIEW. Auch in Win32 könnte man Fehlerbehandlungen mit Exceptions machen. Ggf. würde das im Fehlerfall auch sehr einfach sein. Nur: Exceptions haben was von brachialer Gewalt. Damit kann man die ganze Unterprogramm-Hierarchie mit einem "Rücksprung" aushebeln. Sowas macht man einfach nicht.
Zitat:Wie ich aus euren Antworten herauslesen, ist es von LabVIEW (oder grundsätzlicht?) nicht so angedacht, dass man ein Fehlerhandlig mit Exceptions löst.
Ich bin der Meinung, dass man eine derartige Fehlerbehandlung grundsätzlich nicht mit Exceptions machen sollte.
Zitat:Sondern eher, dass wenn man einen unvorhergesehen Fehler mit dem eigenen Fehlerhandlich nicht abgefangen hat,
man durch die Exception darauf aufmerksam gemacht wird um dies noch nachzuholen.
Eher so.
Oder z.B. wenn plötzlich die serielle Schnittstelle als solche nicht mehr vorhanden ist.
Mir fällt noch was ein: Eine Exception kann man als "Selbstschutzmechnismus" auffassen. Würde das Ausführen einer Methode innerhalb eines Moduls unmöglich sein, so kann das Modul diese Situation mit einer Exception umgehen - sofern es nicht möglich ist, diese Sitiation nicht doch mit einer spezifischen Methode abzuarbeiten (z.B. einer entsprechenden Rückmeldung). Der Dividierbefehl z.B. muss eine Exception machen, wenn der Divisor Null ist: Durch Null darf er nämlich nicht teilen, Möglichkeiten der Fehlerrückmeldung hat er nicht.
Eigentlich ist es eher eine Philosophiefrage, wo man die Grenze zieht zwischen Exception (= nachlaufende Fehlerbehandlung) und eigener (vorlaufender) Fehlervermeidung.
Zum Schluss noch was:
Wenn du doch die Methoden (und Felder etc.) der Klasse ".Net-Exception" haben willst, warum fragst du dann in einem LabVIEW-Forum für LabVIEW-Anwender? Wäre da nicht ein .Net-Forum besser: Deine DLL soll ja die Exception in .Net machen/auswerten und daraus einen Error-Cluster für LV machen.
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
|
|
|
08.02.2010, 00:55
(Dieser Beitrag wurde zuletzt bearbeitet: 08.02.2010 07:40 von rolfk.)
Beitrag #7
|
|
|
| |