Seite 1 von 1
Fehlermeldungen erstellen
Verfasst: Samstag 27. März 2010, 14:20
von lodder
Hallo zusammen
Ich habe mal eine Frage hinsichtlich Fehlermeldungen erstellen.
Habe mir gerade ein Programm geschrieben, in dem ich ein Messgerät ansprechen will. Diesem Messgerät (generator) gebe ich jetzt z.B. eine Frequenz. Anschließend möchte ich ich überprüfen, ob der Generator die Frequenz auch angenommen hat. Welche Art von Fehlermeldung gibt man nun aus, wenn z.B. die Frequenzabweichung zu groß ist ????
Danke für Antworten
Verfasst: Samstag 27. März 2010, 14:30
von Hyperion
"Die Frequenzabweichung war zu groß. Details: ..."? Ich kapiere da nicht so genau die Frage. Meinst Du, wie man das technisch umsetzt oder wirklich inhaltlich? Letzteres ist doch absolut fachspezifisch und müßtest Du doch dann am besten wissen.
Verfasst: Samstag 27. März 2010, 14:37
von lodder
ok sorry vielleicht schlecht formuliert von mir. Ich wollte eigentlich nur wissen, ob man dann raise Error.... usw schreibt.
Verfasst: Samstag 27. März 2010, 14:44
von Hyperion
lodder hat geschrieben:ok sorry vielleicht schlecht formuliert von mir. Ich wollte eigentlich nur wissen, ob man dann raise Error.... usw schreibt.
Kommt drauf an. Eine Exception soll ja deutlich machen, dass im Programmablauf etwas ziemlich schief gelaufen ist...
Vielleicht ist es ja aber vollkommen normal und dann wäre es eher eine Frage der Ausgabe / des Loggings.
Geht's denn da um ein Protokoll?
Verfasst: Samstag 27. März 2010, 14:49
von lodder
ja es geht ihr um ein Protokoll. Ich könnte natürlich auch den gemessenen Wert in eine Variable schreiben und später dann ausgeben. Als Beweis.
Verfasst: Samstag 27. März 2010, 15:09
von Hyperion
lodder hat geschrieben:ja es geht ihr um ein Protokoll. Ich könnte natürlich auch den gemessenen Wert in eine Variable schreiben und später dann ausgeben. Als Beweis.
Also ohne jetzt die fachlichen Belange zu kennen:
1.) Du hast ein Modul, dass mit dem Messgerät kommuniziert, richtig?
2.) Es kann sein, dass das Modul mit Übergabewerten nicht klar kommt und dann quasi einen Fehler produziert, richtig?
3.) Wenn 2.) dann solltest Du vermutlich eine Exception werfen, die genau das abbildet. Zumindest würde ich das unter diesen Annahmen so sehen.
Verfasst: Samstag 27. März 2010, 15:16
von lodder
hi Hyperion
zu 1.) ja
zu 2.) ich will einfach schon am Anfang dieser Messung einen solchen Fehler vermeiden, falls er auftritt. Ist hier nämlich der Übergabewert nicht korregt, dann wird später mein Messergebnis nicht genau.
ich danke dir für die Antwort
Verfasst: Samstag 27. März 2010, 15:42
von Hyperion
lodder hat geschrieben:hi Hyperion
zu 1.) ja
zu 2.) ich will einfach schon am Anfang dieser Messung einen solchen Fehler vermeiden, falls er auftritt. Ist hier nämlich der Übergabewert nicht korregt, dann wird später mein Messergebnis nicht genau.
Also quasi bevor Du dem Messgerät diesen Wert übermittelst? Ich würde sagen ganz klar ein Fall für eine Exception. Schau Dir dazu am besten mal das Tutorial und die Doku an. Evtl. bietet sich da schon eine Built-in exception an oder ließe sich als Basisklasse nutzen.
Verfasst: Samstag 27. März 2010, 15:58
von lodder
Hier mal ein Auschnitt aus dem Code
Code: Alles auswählen
def GetLevel(self, eValency=VALENCY.Base):
ffreq = -25
return float(ffreq)/10**eValency
def SetLevel(self, fLevel, eValency=VALENCY.Base):
fCtrlLevel = float(fLevel * 10**eValency)
fMonLevel = self.GetLevel()
print fMonLevel
if abs(fMonLevel - fCtrlLevel) < EPSILON/100.0:
return True
else:
return False
Hier ist es nicht die Frequenz sondern der Pegel der überprüft wird.
Ich wollte nun anstatt return False eine Exception werfen.
Verfasst: Samstag 27. März 2010, 16:09
von Hyperion
Also zum einen ist der Code ziemlich krude...
... SetLevel() ist verrutscht!
PEP8 beachten (get_level() & set_level())
SetLevel wirkt sonderbar. Von einer solchen Funktion mit diesem namen erwartet doch niemand einen Rückgabewert! Insofern vergiss diesen return-Kram und wirf dort tatsächlich lieber eine Exception, wenn der Wert irgend wie nicht passen sollte.
Wozu wird -25 innerhalb der Funktion an den Namen ffreq gebunden? Da das eh nicht variabel ist, kann man sich das sparen imho. Oder aber Du setzt es auf Modulebene als Konstante; oder ggf. auch als default-Parameter.
Ich sehe grad: Da Du "self" drin stehen hast, dürften das Methoden einer Klasse sein. Somit ist Dein Design sehr unpythonisch, da man in Python keiner Getter und Setter braucht. Du schaust Dich am besten mal nach "Properties" um - das wäre der richtige Weg. Wobei in der SetLevel auch nichts an das Objekt gebunden wird...
Tja, ohne mehr Code kann man nichts genaueres sagen dazu...
Verfasst: Samstag 27. März 2010, 16:43
von lodder
also das mit SetLevel und GetLevel, habe ich nur genommen, da ich bereits ein Script habe und sonst müsste ich alles umändern.
ich kann dich gut verstehen, wenn du schreibst sehr unpythonisch. So sieht mein Programm in Wirklichkeit ja auch nicht aus. Ich musste es abändern.
aber du hilfst mir trotzdem unheimlich. Dafür nochmals besten Dank. Aber das mit den return Werten ist wirklich quatsch. da hast du recht. Schließlich will ich ja nur was setzen.
Verfasst: Samstag 27. März 2010, 16:59
von Hyperion
lodder hat geschrieben:also das mit SetLevel und GetLevel, habe ich nur genommen, da ich bereits ein Script habe und sonst müsste ich alles umändern.
Hm... wären ja nur zwei Methoden?
ich kann dich gut verstehen, wenn du schreibst sehr unpythonisch. So sieht mein Programm in Wirklichkeit ja auch nicht aus. Ich musste es abändern.
aber du hilfst mir trotzdem unheimlich. Dafür nochmals besten Dank. Aber das mit den return Werten ist wirklich quatsch. da hast du recht. Schließlich will ich ja nur was setzen.
Ich dachte Du hast eine Vorlage benutzt und diese eben nicht groß geändert? *verwirrt sei*
Poste Dein Script doch mal in ein paste-bin (paste.pocoo.org)