Рассмотрите возможность явного повторного повышения с использованием предложения pylint ключевого слова «от».

У меня есть небольшой код Python, в котором я использую обработку исключений.

def handler(event):
    try:
        client = boto3.client('dynamodb')
        response = client.scan(TableName=os.environ["datapipeline_table"])
        return response
    except Exception as error:
        logging.exception("GetPipelinesError: %s",json.dumps(error))
        raise GetPipelinesError(json.dumps({"httpStatus": 400, "message": "Unable to fetch Pipelines"}))

class GetPipelinesError(Exception):
    pass

Предупреждение pylint дает мне возможность явного повторного повышения с использованием ключевого слова from. Я видел несколько других сообщений, где они использовались и вызывали ошибку. Я сделал такие модификации

except Exception as GetPipelinesError:
    logging.exception("GetPipelinesError: %s",json.dumps(GetPipelinesError))
    raise json.dumps({"httpStatus": 400, "message": "Unable to fetch Pipelines"}) from GetPipelinesError

Это правильный способ сделать?


person ashakshan    schedule 08.04.2021    source источник
comment
Отвечает ли это на ваш вопрос? поднятие Pylint-отсутствия   -  person Masklinn    schedule 09.04.2021


Ответы (1)


Нет. Целью raise-from является цепочка исключений. Правильный синтаксис в вашем случае:

except Exception as error:
   raise GetPipelinesError(json.dumps(
       {"httpStatus": 400, "message": "Unable to fetch Pipelines"})) from error

Выражения, следующие за raise и from, должны быть классами исключений или экземплярами.

person Michael Ruth    schedule 08.04.2021