Применить слушателя к System.err? - PullRequest
0 голосов
/ 08 февраля 2019

У меня есть идея, что всякий раз, когда в моей программе JavaFX возникает необработанное исключение, вместо того, чтобы полагаться на вывод консоли, я могу отображать предупреждение для пользователя.Я думаю, что, возможно, я смогу захватить вывод из System.err для использования.Вот что я пробовал до сих пор:

    PrintStream myStream = new PrintStream(System.err) {
        @Override
        public void println(String s) {
            super.println(s);
            Log.debugLog(s); //this function logs to a file and displays an alert to user
        }
    };
    System.setErr(myStream);

Этот сегмент кода работает, если я заменю System.err на System.out и с System.setErr на System.setOut.Однако это захват System.out, а не System.err. Полагаю, лучше задать вопрос, какую именно функцию вызывает System.err при отображении ошибки на консоли?Так что это может переопределить это.Любые советы приветствуются.

Ответы [ 2 ]

0 голосов
/ 12 февраля 2019

Вы можете создать оповещение JavaFX, настроенное для отображения трассировки стека исключений вместе с кратким сообщением.Эта ссылка показывает код для ниже.

enter image description here

0 голосов
/ 08 февраля 2019

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

Thread.setDefaultUncaughtExceptionHandler((t, e) -> {
       // show alert to user
       e.printStackTrace();
       // do whatever you want with the Exception e

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