Python 异常对象和IDE中缺少的_上下文_和_原因__)属性
python文档 这个问题提到了异常对象上的Python 异常对象和IDE中缺少的_上下文_和_原因__)属性,python,Python,python文档 这个问题提到了异常对象上的\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu和\uuuuuuuuuuuuuuu上下文属性。 但是,当使用调试器检查异常对象时(调试器设置为使用raise),异常对象似乎没有这些属性,只是显示为元组。 (如来自我的调试器-pycharm) 这是在调试器根据最后一行的提升启动时发生的 尝试: response=requests.request(方法、url、json=payload、headers=headers) 除(reque
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
和\uuuuuuuuuuuuuuu上下文
属性。
但是,当使用调试器检查异常对象时(调试器设置为使用raise
),异常对象似乎没有这些属性,只是显示为元组。
(如来自我的调试器-pycharm)
这是在调试器根据最后一行的提升启动时发生的
尝试:
response=requests.request(方法、url、json=payload、headers=headers)
除(requests.ConnectionError、requests.Timeout)外,其他为e:
logger.exception(“Api不可用”)
引发错误。从e不可用(“Api不可用”)
尝试:
响应。针对_状态()提出_
除了requests.exceptions.HTTPError作为e:
logger.exception(“Api HTTP错误”)
尝试:
raw_data=response.json()
除了json.JSONDecodeError作为e:
raise errors.ApiHTTPError(f'{response.status_code},{response.text},
text=response.text)来自e
api_errors=raw_data.get('errors'))
message=raw_data.get('message')
raiseerrors.apittperror(f'HTTP Error{response.status_code},{message},{api_errors}',text=response.text,
api_错误=来自e的api_错误)
errors.py
类开关错误(异常):
通过
类不可用(开关错误):
通过
类ApiHTTPError(开关错误):
定义初始化(self,message=None,text=None,api\u errors=None):
self.text=文本
self.message=消息
self.errors=api\u错误
定义(自我):
返回自我信息
ApiJsonError类(交换机错误):
定义初始化(self,message=None,text=None):
self.text=文本
self.message=消息
定义(自我):
返回自我信息
类APIRROR(开关错误):
定义初始化(自身、消息、状态代码、数据、状态=无)
self.message=消息
self.status\u code=状态\u code
self.data=数据
self.status=状态
定义(自我):
返回自我信息
那个\uuuu异常\uuuu
东西不是异常。看起来PyCharm已经将其放入了一个\uuuu异常\uuuu
变量中。例外情况是第二个元组元素,您应该在这里查找\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。在调试器冻结时,pycharm似乎正在做一些与执行sys.exec.info()
稍有不同的事情,给出了前面的异常,这是导致以下异常的原因。我认为Pycharm将最后一个异常放在一个变量异常中,这个变量异常看起来像是在调用框架中执行sys.exc_info()。在调试器控制台中,我可以按照建议执行error=\uuuu exception\uuuu[1]
然后执行error.\uuuuu cause\uuuu
和error.\uuuu context\uuuuu
按预期工作,从而获得错误的全部详细信息。pycharm使用pdb作为调试器,还将异常分配给调试器中的异常名称@云蒂:这看起来不像pdb的行为。我认为pdb不会在\uuuuu exception\uuuuu
中保留回溯。你是对的,pycharm不使用pdb,因此存在一些差异。相反,看起来他们使用的是pydev。