Я смотрю, как добавить jint в проект c#. Jint выглядит великолепной работой с активным проектом на github и его Gitter. Тем не менее, документация выглядит как «pragmati c», поэтому я приду сюда, чтобы спросить, что, вероятно, является распространенным вопросом относительно того, какой тип исключений доступен для перехвата et c.
В идеале, для любой ошибки Я могу обнаружить:
- Номер строки, в которой возникает ошибка
- Позиция в строке, если необходимо.
- Описание ошибки JS.
В приведенном ниже примере я ловлю JS ошибки разбора и JS ошибки выполнения. Как насчет тайм-аута?
Пока у меня есть ...
try
{
Jint.Engine engine = new Jint.Engine();
string script = "var a = 1, b = 2, c= 3; return a + b + c;"
// wrap the script in an immediate function to make the return statement work.
script = "(function() {\n#code\n})();";.Replace("#code", script);
// break script into an array for later reference in errors
string[] map = script.Split('\n');
// execute the script
string result = engine.Execute(script).GetCompletionValue().ToString();
}
catch (ParserException pEx)
{
Debug.("Parser Exception:" + pEx.Message + " " + map[pEx.LineNumber - 1]());
}
catch (JavaScriptException rEx)
{
Debug.Log("Runtime Exception " + rEx.Message);
}
//... about here I would be thinking about
// timeout - how long should I wait then how to catch an exception
// any other pragmatic exceptions to catch
catch (Exception ex)
{
Debug.Log("General Error : \n" + ex.Message + "\n" + ex.StackTrace);
}
Я надеюсь, что у кого-то есть пример кода, который он может вырезать и вставить в качестве ответа с небольшим объяснением более тонких моментов.