【问题标题】:PyV8 throw error into JavaScript/get current line numberPyV8 在 JavaScript 中抛出错误/获取当前行号
【发布时间】:2013-07-18 16:12:57
【问题描述】:

我正在使用 PyV8,我想禁止将 javascript 对象分配给我的 python 对象,因为当前有 memory leak bug with PyV8。我想出了这个代码:

def __setattr__(self, name, val):
    if isinstance(val, (PyV8.JSFunction, PyV8.JSObject)):
        raise ValueError("Can't put js objects on py values")
    object.__setattr__(self, name, val)

但是,我这样做时得到的回溯并不是很有帮助:

Traceback (most recent call last):
  File "pyv8-bug-186.py", line 142, in <module>
    """)
  File "pyv8-bug-186.py", line 75, in run_case
    obj = ctxt.eval(js)
ValueError: Can't put js objects on py values

特别是,它根本没有提供关于哪个 javascript 文件正在运行或行号是什么等信息。我看到了两个潜在的解决方案:

  1. 获取当前运行的 javascript 行号并将其包含在 python 异常中。
  2. 以某种方式向 javascript 中抛出异常,以便 V8 显示错误,然后将包含行号。

我该怎么做呢?

【问题讨论】:

    标签: javascript python exception v8 pyv8


    【解决方案1】:

    不确定这是否是设计使然,但目前,Python 内部的raise TypeError() 会引发并显示 javascript 异常(以及行号和列号)。大获成功!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-06
      • 1970-01-01
      • 2012-09-06
      • 2012-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多