Fehlermeldungen erstellen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
lodder
User
Beiträge: 67
Registriert: Montag 11. Januar 2010, 11:03

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
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

"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.
lodder
User
Beiträge: 67
Registriert: Montag 11. Januar 2010, 11:03

ok sorry vielleicht schlecht formuliert von mir. Ich wollte eigentlich nur wissen, ob man dann raise Error.... usw schreibt.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

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?
lodder
User
Beiträge: 67
Registriert: Montag 11. Januar 2010, 11:03

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.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

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.
lodder
User
Beiträge: 67
Registriert: Montag 11. Januar 2010, 11:03

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
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

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.
lodder
User
Beiträge: 67
Registriert: Montag 11. Januar 2010, 11:03

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.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

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...
lodder
User
Beiträge: 67
Registriert: Montag 11. Januar 2010, 11:03

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.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

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)
Antworten