Ich habe seit zwei Tagen mit dem Auslösen von Ausnahmen für Google Big Query experimentiert. Ich habe schließlich herausgefunden, wie es funktioniert, so wie es funktionieren sollte, aber ich verstehe nicht wirklich, warum es funktioniert. Ich suche nach Unterstützung, um besser zu verstehen, was in meinem Code vor sich geht. Ich habe Stack Overflow bereits durchforstet und nichts scheint mir zu helfen.Hilfe erforderlich, um zu verstehen, wie die Ausnahmebehandlung funktioniert
Hier ist meine Ansicht ...
@api_view(['POST'])
def delete_table(request): # Deletes table from Big Query
project_id = request.POST.getlist('data[]')[0]
dataset_id = request.POST.getlist('data[]')[1]
table_id = request.POST.getlist('data[]')[2]
bq = BigQuery(project_id) # Instantiates BQ instance specific to project id
try:
bq.deleteTable(dataset_id, table_id) # Calls deleteTable method from BQ instance
except Exception, res:
logger.debug(res)
return Response('')
Hier ist meine Delete-Methode in meinen Big Query-Controller ...
def deleteTable(self, datasetId, tableId):
try:
response, content = \
self.http_auth.request("https://www.googleapis.com/bigquery/v2/projects/%s/datasets/%s/tables/%s" % (self.PROJECT_ID, datasetId, tableId), "delete")
content = json.loads(content)
message = content['error']['message']
raise Exception, message
except:
if response.status < 300:
message = tableId + " Was Deleted."
raise Exception, message
else:
raise Exception, message
Ich verstehe, dass die view
ist ein erhöhter Fehler von der bqcontroller
, ich verstehe nicht, wie t Die Fehler werden in der bqcontroller
ausgelöst. Könnte jemand bitte helfen, Licht zu holen?
Warum werfen Sie eine Ausnahme, nur um es sofort zu fangen? – user2357112
Ihr 'try' Block enthält eine' raise' Anweisung, daher löst ** ** ** immer eine Ausnahme aus. Sicherlich wollen Sie nur eine Exception im 'except' Block auslösen? Da Sie Ihre eigene Nachricht bereitstellen, verlieren Sie auch im Block "except" eine bestimmte Nachricht, die möglicherweise vom API-Aufruf zurückgegeben wurde. –
Sie scheinen Ausnahmen anstelle einer 'return' Anweisung zu verwenden. Sie fangen auch * fast alle Ausnahmen *. Gibt es hier keine spezifischere Ausnahme (oder eine Reihe von Ausnahmen)? –