Как обрабатывать обработку исключений функции Azure Python?

#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 Да