【问题标题】:Propagating embedded Python Exceptions up to C++将嵌入式 Python 异常传播到 C++
【发布时间】:2014-07-28 05:37:36
【问题描述】:

如果我有带有嵌入式 Python 函数的 C++ 代码,它使用 Python 的 C API 来调用 Python 的解释器,我怎样才能让 Python 异常上升到 C++ 级别?


注意:不是相反的问题(关于将 C++ 扩展异常传播到 Python 解释器)。

【问题讨论】:

  • 根据你的需要,你可以只抛出python异常的类名。或者您是在问如何在 c++ 中访问 python 调用中的异常。
  • 抛出的 Python 异常包含信息性消息,我想以与在纯 Python 中打印到控制台相同的方式打印这些消息。
  • 等等,你问的是如何打印格式化的回溯?或者只是异常本身。我认为Py_PrintPyObject* 例外应该是后者。
  • 任何一个 - 我只是不清楚如何首先获得对异常对象的引用。

标签: python c++ exception-handling embedding


【解决方案1】:

https://docs.python.org/2/c-api/exceptions.html

具体来说,PyErr_PrintEx(0) -- 这将打印回溯。

【讨论】:

  • 实际上,我现在想知道这是不是错了。如果您使用的是 Py_Main 或 PyRun_,您可能无法使用 PyErr_ 访问异常信息。
  • 我认为 OP 的意思是“如何使用 Python 异常中的信息抛出 C++ 异常?”。至少,试图找出究竟是怎么做到的,这就是我最终来到这里的原因。
猜你喜欢
  • 2012-10-22
  • 1970-01-01
  • 2010-11-26
  • 1970-01-01
  • 2017-08-30
  • 2012-12-06
  • 1970-01-01
  • 2016-10-25
  • 1970-01-01
相关资源
最近更新 更多