PyV8 выдает ошибку в JavaScript/ получает текущий номер строки

Я использую PyV8, и я хотел бы запретить назначение объектов javascript моим объектам python из-за текущей ошибки утечки памяти в 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 показывал ошибку, которая будет включать номера строк.

Как бы я поступил так же?

1 ответ

Решение

Не уверен, что это по замыслу, но сейчас, raise TypeError() изнутри Python вызывает исключение javascript, которое вызывается и отображается (вместе с номерами строк и столбцов). Огромный успех!

Другие вопросы по тегам