Получить трассировку стека исключений в Rhino - PullRequest
1 голос
/ 19 сентября 2019

У нас есть приложение, которое позволяет вводить скрипты.Эти сценарии могут быть в нескольких файлах, поэтому, когда возникает исключение, мы хотим иметь возможность показать трассировку стека администратору приложения, чтобы он мог диагностировать проблему.

Есть ли способ извлечь стекслед от исключения Rhino?

1 Ответ

3 голосов
/ 19 сентября 2019

Прежде всего, чтобы получить хорошую трассировку стека, вы должны быть очень осторожны при оценке сценариев в своей области видимости.Я видел, что многие разработчики упускают это из виду, когда они всегда отправляют одни и те же параметры для sourceName и lineno, например:

ctx.evaluateString(scriptScope, script, "script", 0, null);

Так что в 3-м и 4-м параметрах вы должны отправитьИмя файла чего-то, что поможет разработчику определить сценарий.Тогда номер строки должен быть правильным, если вы объединяете сценарии.

Так что, как только вы правильно оцените все сценарии в вашем контексте, вы сможете получить полезный трек стека.Так что просто перехватите исключение и обработайте информацию в трассировке стека:

try {
  // execute script
} catch (RhinoException re) {
  StackTraceElement[] stackTrace = re.getStackTrace();
  if (stackTrace != null) {
    for (StackTraceElement stackElement : stackTrace) {
      // stackElement.getFileName();
      // stackElement.getLineNumber();
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...