0
我一直在爲連續兩天提出Google Big Query的例外做準備。我終於想出瞭如何使它工作的方式,但我不明白它爲什麼起作用。我正在尋求幫助,以更好地瞭解我的代碼中發生了什麼。我已經搜遍了堆棧溢出,似乎沒有任何幫助。需要幫助才能瞭解異常處理的工作原理
這是我的觀點...
@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('')
這是我在我的大查詢控制器刪除方法...
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
據我所知, view
正在從bqcontroller
捕獲一個引發的錯誤,我不明白t他在bqcontroller
中提出錯誤。有人能幫助解決一些問題嗎?
爲什麼拋出異常只能立即捕獲? – user2357112
您的'try'塊包含一個'raise'語句,因此它總是**引發一個異常。當然,你只想在「except」塊中引發異常?同樣在except塊中,由於您提供了自己的消息,因此您將丟失可能從API調用返回的任何特定消息。 –
您似乎正在使用異常來代替'return'語句。你也捕捉*幾乎所有例外*。是否沒有更具體的例外(或一組例外)在這裏? –