Вызвать исключение из ответного сообщения

#python-3.x

#python-3.x

Вопрос:

Как вызвать исключение из ответного сообщения, например {‘status’: «недостаточный кредит»}

                 try:
                    new_order = api.request(r)
                except as                       :
                    print(new_order['status'])
                else:
                    print(new_order)
  

Ответное сообщение имеет разные ключи / значения при успешном / неуспешном выполнении.

Комментарии:

1. Для каких известных значений 'status' это можно было бы считать успешными? Вы могли бы использовать простой оператор if else и вызвать какое-либо исключение, если статус считается «неудачным».

2. ответом является {‘status’: «недостаточно кредитов»}, и когда он успешен, это совершенно другой dict с другим ключом / значениями.

Ответ №1:

Мне нужно было бы знать, что api.request такое, чтобы точно ответить на ваш вопрос.

Не зная, что это такое, я бы предложил использовать обратную трассировку с ошибкой, которая находится в стандартной библиотеке python.

например:

 import traceback
try:
    new_order = api.request(r)
except Exception as err:
    print(err)
    traceback.print_exc()

else:
    print(new_order)
  

Кроме того, если api.request возникает исключение, это не будет связано с каким-либо «сообщением о состоянии», которое они отправляют. Если они сообщают вам об ошибке, то api.result , скорее всего, вернут объект / список с кодом состояния и / или сообщением об ошибке в нем, а не вызовут исключение на вашем сервере (что, я думаю, для них невозможно сделать).

Подумайте об этом так: выполняется код на стороне вашего сервера api.request , который, вероятно, является запросом GET или POST на сервер api. Если в вашем запросе была ошибка, они отправят вам сообщение о том, в чем проблема (я предполагаю). Ни где в этом процессе не будет возникать исключение.

Если запрос отправляется на их сервер, на вашем сервере не должно возникать никаких исключений.

исключение возникает при вызове raise 'some exception here' или при наличии синтаксической ошибки / другой серьезной ошибки. В любом случае выполнение вашего кода немедленно прекращается, и ваш сервер ответит вашему клиенту ошибкой внутренней службы 500.

Комментарии:

1. Похоже, мне нужен дополнительный вложенный оператор if в моем операторе else. Это не исключение, а ответ, который влияет на мой код в инструкции else.