2013-07-18 1 views
0

Я использую PyV8, и я бы хотел запретить назначение объектов javascript для моих объектов python из-за текущего memory leak bug with PyV8. Я пришел upwith этот код:Ошибка PyV8 в JavaScript/получить текущий номер строки

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

Как бы я сделал это?

ответ

0

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

 Смежные вопросы

  • Нет связанных вопросов^_^