【问题标题】:How to read the content on an exception raised by a third party app in django?如何在 django 中读取第三方应用程序引发的异常的内容?
【发布时间】:2021-06-01 13:43:50
【问题描述】:

在某种情况下需要帮助。我已向第三方应用程序发出请求,但它引发了异常,因此我想阅读此异常的消息

exceptions.AlreadyExistError : Reason = Entered bank Account is already registered:: response = {"status": "ERROR", "subCode": "409", "message": "Entered bank Account is already registered"} request_id  = fdd54b5c25c73cc3d437188278b0be26



try:
        add_beneficiary = Beneficiary.add( bankAccount=order.payee_bank_account_number)
 
    except Exception as e:
        print(e) #Reason = Entered bank Account is already registered:: response = {"status": 
                  "ERROR", "subCode": "409", "message": "Entered bank Account is already registered"} 
                   request_id  = c57d9df21bd413d9a46eaec82a590e9b

如何阅读异常信息

【问题讨论】:

  • 只需删除该尝试,除非获取错误的完整堆栈跟踪。捕获except Exception as e 的毯子也不是一个好习惯,因为可能会发生许多不同的错误,但您会捕获所有个错误。
  • print(str(e)) 将打印异常消息
  • @AbdulAzizBarkat 实际上我需要捕获错误,因为在此基础上我必须在 except 块中执行其他任务,所以我只想提取一些如何进行比较的消息。
  • @AmineMessaoudi 我已经尝试过了,但它打印的正是我在问题中提到的内容。
  • @AmitYadav 你想获取request_id 的值吗?

标签: python-3.x django exception django-models django-rest-framework


【解决方案1】:

根据你上一条评论,你可以使用正则表达式匹配json格式的响应,然后解析得到消息

import re, json

exception = str(e)
result = json.loads('{' + re.search('{(.*)}', exception).group(1) + '}')
message = result['message']
print(message)

输出

> Entered bank Account is already registered

【讨论】:

  • 非常感谢@AmineMessaoudi,它运行良好。
猜你喜欢
  • 2013-06-16
  • 2011-05-01
  • 2011-04-25
  • 1970-01-01
  • 1970-01-01
  • 2018-04-19
  • 1970-01-01
  • 2011-06-12
  • 2020-05-29
相关资源
最近更新 更多