Пример шаблона обработки ошибок Jint и подробности - PullRequest
0 голосов
/ 06 апреля 2020

Я смотрю, как добавить jint в проект c#. Jint выглядит великолепной работой с активным проектом на github и его Gitter. Тем не менее, документация выглядит как «pragmati c», поэтому я приду сюда, чтобы спросить, что, вероятно, является распространенным вопросом относительно того, какой тип исключений доступен для перехвата et c.

В идеале, для любой ошибки Я могу обнаружить:

  1. Номер строки, в которой возникает ошибка
  2. Позиция в строке, если необходимо.
  3. Описание ошибки 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);
}   

Я надеюсь, что у кого-то есть пример кода, который он может вырезать и вставить в качестве ответа с небольшим объяснением более тонких моментов.

...