Оценка JavaScript () Исключение - номер строки

В JavaScript у меня есть a var str = ".a long string that contains many lines..." В случае исключения, который вызванный eval(str);

Я имел, любят ловить его и печатать номер строки, который вызвал исключение. (строка, внутренняя к ул.)

Действительно ли это возможно?

ОТРЕДАКТИРУЙТЕ Как часть проекта Аллигатора (http://github.com/mrohad/Alligator), сервер приложений для JavaScript, я читаю файлы из диска и оценки () что-нибудь, что вкладывается к scriplet ()

Я запускаю этот скрипт вне браузера, с помощью NodeJS (сверху V8).

27
задан DuduAlul 15 August 2010 в 20:46
поделиться

4 ответа

Я нашел решение, которое довольно неэффективно, но я использую его только когда debug_mode==1, так что это не так уж плохо...

Я записываю eval_str в файл, я "импортирую этот файл, вызываю его внутри try{}catch{} и разбираю строку ошибки из трассировки стека...

В моем конкретном случае код выглядит так:

var errFileContent = "exports.run = "+evalStringAsAFunction+";";
fs.writeFile('/home/vadmin/Alligator/lib/debugging.js', errFileContent, function (err) {
    var debug = require('./debugging');
    try{
         debug.run(args...);
    }
    catch(er){
         log.debug(parseg(er));
    }
});
3
ответ дан 28 November 2019 в 05:55
поделиться

Попробуйте добавить try / catch к строке вместо eval:

var code = 'try{\nvar c = thisFuncIsNotDefined();\n}catch(e){alert(e.lineNumber);}';
6
ответ дан 28 November 2019 в 05:55
поделиться

1) Выполнить:

var javascript_offset;
try {
  undefined_function();
} catch(ex1) {
  javascript_offset = ex1.lineNumber;
}
try {
  YOUR_STRING_WITH_JS
} catch (ex2) {
  var line_that_caused_it = ex2.lineNumber - javascript_offset -2;
  HANDLE_THE_EXCEPTION_HERE
}
3
ответ дан 28 November 2019 в 05:55
поделиться

Это решит вашу проблему?

try {
    eval(str);
} catch (e) {
    console.log(e.lineNumber)
}
-1
ответ дан 28 November 2019 в 05:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: