Ich habe gerade angefangen, ein verteiltes System zu erstellen, das jetzt einen einzelnen Server und eine Reihe von Clients hat. Die verwendete Sprache ist Python und die Kommunikation erfolgt über Sockets und JSON.Verteiltes System: Fehler auf Serverseite auf Clientseite ausgelöst
except Exception as e:
jsonResult = {"error":
{
"name":e.__class__.__name__,
"args": e.args
}
}
jsonResult = json.dumps(jsonResult)
jsonResult += "\n"
return jsonResult
Und dann versuchen, es so auf der Client-Seite zu erhöhen: Wenn ein Fehler auf der Server-Seite tritt ich die Fehlerklassenname und die Fehler Argumente auf der Client-Seite wie folgt senden
errorFunc = decodedReply["error"]["name"]
args = decodedReply["error"]["args"]
print (args)
# Builds and appends the argumentstring to the error class-name.
errorFunc += '('
for arg in args:
# Handles when the argument is a string.
if isinstance(arg, str):
errorFunc += '\'' + arg + '\','
else:
errorFunc += arg + ','
# Removes the extra ',' from the string before adding the last ')'.
errorFunc = errorFunc[:-1]
errorFunc += ')'
# Debugging print.
print ("Here: " + errorFunc)
raise exec(errorFunc)
Als ich das bekomme ich den Fehler
TypeError: exceptions must derive from BaseException
Von dem, was ich hier lesen: Error exception must derive from BaseException even when it does (Python 2.7)
es sieht so aus, als müsste ich es als Klasse deklarieren. Gibt es da überhaupt etwas, um das zu umgehen?
zeigen Ihnen die Ausgabe von 'print (“ Hier: "+ errorFunc)"? – Saksow
'Hier: ValueError ('ABC')' ist der Ausgang. Der Fehler ist einer, den ich manuell auf der Serverseite ausgelöst habe. –
Überprüfen Sie meine Antwort – Saksow