@kicherov_maxim

Как обработать исключение missing required arguments?

Делаю crud api, на контроле явно заданны обязательные аргументы. Как обработать исключение когда не хватает обязательные аргументов и выдать ошибку?

class Control(BaseControl):
    async def create(self, name: str, inn: str, ogrn: str, director: str, address: str, **kwargs):
        ....


view вызывает контрол
async def post(self, request: Request) -> HTTPResponse:
        return json((await self.control().create(**request.json)).as_dict())

Исключение:
<class 'TypeError'> create() missing 5 required positional arguments: 'name', 'inn', 'ogrn', 'director', and 'address'

Все хорошо,но надо как то получить список недостающих аргументов и выдать ошибку на русском языке.
  • Вопрос задан
  • 390 просмотров
Решения вопроса 1
@twistfire92
Python backend developer
В общем через конструкцию try except ловим ошибку TypeError, либо просто приводим ее к строке, либо вытаскиваем первый элемент из args.
Поиграйтесь с этим кодом, чтобы понять о чем речь
def foo(name, last_name, age, email):
    return f'{name}, {last_name}, {age}, {email}'

try:
    foo('Vasya')
except TypeError as e:
    error_text = e.args[0] #  или error_text = str(e)
    print(error_text)


Дальше можете парсить текст ошибки как вам угодно. Регулярками, или с помощью error_text.split(':') или еще как хотите.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы