Могу ли я создать java.lang.StackTraceElement, который ссылается на не-Java-файл? - PullRequest
0 голосов
/ 02 марта 2019

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

В идеале мой код должен выглядеть примерно так:

try {

   // Try to parse the file
} catch (MySyntaxException e) {
    StackTraceElement[] stackTrace = e.getStackTrace();
    StackTraceElement[] newStackTrace = new StackTraceElement[stackTrace.length+1];
    newStackTrace[0] = new StackTraceElement(e.getClassNameEquivalent(), "", e.getFile(), e.getLineNumber());
    System.arraycopy(stackTrace, 0, newStackTrace, 1, stackTrace.length);
    e.setStackTrace(newStackTrace);
    throw e;
}

Когда я это делаю, яполучить трассировку стека, которая выглядит примерно так:

org.example.MySyntaxException: Something went wrong
    at Filename.yaml.(config/files/Filename.yaml:21)
    at org.example.MyParser.parse(MyParser.java:41)
    // ...

Однако IntelliJ не рассматривает строку Filename.yaml.(config/files/Filename.yaml:21) как кликабельную.Есть ли способ убедить IDE, что я могу щелкнуть эту строку?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...