2016-11-25 1 views
0

In-Datei-Dienstprogramm zu handhaben ich habe:Richtige Art und Weise eine Ausnahme in einer Datei mit dem Anrufer in einer anderen

def validation(): 
     try: 
      csrf_key, session_token, form_token = csrfKey, str(session[ 'csrf_token' ]), request.values.get('csrf_token') 
     except: 
      print("except") 
      # Should I raise() here ? 
     else: 
      print("after except") 

In Dateisteuerung ich an einem gewissen Punkt habe:

def validation() # call 

Idealerweise wollte ich die Ausnahme in der Dienstprogrammdatei, um die Ausführung des Skripts vollständig zu unterbrechen, aber nicht zu beenden. Da dies jedoch nicht möglich ist, wäre der richtige Weg, dies zu tun, re-raise() in der Ausnahme von Utility-Datei, und versuchen Sie es/außer in der Controller-Datei, so würde die Ausnahme von Dienstprogramm zu Controller weitergegeben werden Datei. Ist das der richtige Umgang mit dieser Situation?

+0

Es ist eine gute Möglichkeit, mit der Situation umzugehen. –

Antwort

0

Eine Möglichkeit besteht darin, "false" aus der Dienstprogrammdatei zurückzugeben, wenn die Validierung fehlschlägt und der Controller eine Nachricht drucken lässt. Sie können die Fehlerursache auch in der except-Klausel protokollieren. Aber letztendlich hängt der "richtige" Weg von Ihnen ab, je nachdem, was Sie von dem Programm erwarten. Auch "nicht möglich" ist nicht wahr - alles ist möglich. Es gibt eine "finally" -Klausel in der try-except-Syntax, die ausgeführt wird, egal was passiert.

0

Ich würde den Versuch/Ausnahme-Block aus der validation-Funktion entfernen und stattdessen in der aufrufenden Funktion in der Controller-Datei platzieren.

So:

def validation(): 
    csrf_key, session_token, form_token = csrfKey, str(session[ 'csrf_token' ]), request.values.get('csrf_token') 
    return csrf_key, session_token, form_token 

Und rufen Sie mit:

try: 
    csrf_key, session_token, form_token = validation() 
except: 
    print "Your err msg" 
finally: 
    # run other code... 

Wenn Sie erneut versuchen zu halten, können Sie es in einer Schleife mit einer Pause Klausel auf Erfolg setzen können. Hoffe das hilft!

Verwandte Themen