#python #exception #azure-functions
#питон #исключение #azure-функции
Вопрос:
Я новичок в обработке исключений Python. Как мне правильно try
выполнить следующее, except
если .get_entity
не удается, но пройти, если Status 200
?
Вот где я нахожусь:
- Однако это неверно. Надеюсь, вы могли бы пояснить это на примере.
from azure.cosmosdb.table.tableservice import TableService
from azure.cosmosdb.table.models import Entity
from azure.common import AzureMissingResourceHttpError
def get_table_row(TableName, PartitionKey, RowKey):
try:
table_lookup = table_service.get_entity(TableName, PartitionKey, RowKey)
except AzureMissingResourceHttpError as e:
logging.error(f'#### Status Code: {e.status_code} ####')
finally:
if e.status_code == 200:
return table_lookup
else:
logging.error(f'#### Status Code: {e.status_code} ####')
data = get_table_row(TableName, PartitionKey, RowKey)
Ответ №1:
Вы можете изменить свой код, как показано ниже:
def get_table_row(TableName, PartitionKey, RowKey):
try:
table_lookup = table_service.get_entity(TableName, PartitionKey, RowKey)
except AzureMissingResourceHttpError as e:
if e.status_code == 200:
return table_lookup
else:
logging.error(f'#### Status Code: {e.status_code} ####')
return "whatever you want"
else:
return table_lookup
Комментарии:
1. Спасибо @HuryShen; тестирую это сейчас.
2. Это сработало с одним предостережением, хотя a
Status 404
было получено, функция продолжалась после этой точки. Как мне корректно выйти из функции в этот момент, еслиget_table_row
она не возвращаетсяStatus 200
?3. Привет @ericOnline В приведенном выше коде, если получено 404, он выполнит код в разделе first
else
:logging.error(.....
,return "whatever you want"
. Какие возвращаемые данные зависят от вас, но, на мой взгляд, если вы хотите ответить корректно, вы можете назначить пустой списокtable_lookup
, а затемreturn table_loopup
там.4. ОК. Итак, что-то вроде: если 404, под первым
else:
добавьтеtable_lookup = None
иreturn table_lookup
. Затем, когда вызывается функция,if table_lookup != None: "do things" else: logging.info("#### No entity found ####")
?5. @ericOnline Да