2015-09-11 3 views
0

В моем Java-коде я обнаружил действительно странную ошибку. Даже когда я ввожу RuntimeException в свою программу, он не распознается JVM.Консоль, не показывающая Runtime Exception

Вот демо, что я написал

private static void someMethod(){ 
    //Some Code 
    if(true) 
     throw new RuntimeException(); 
    // More Code 
} 

Я добавил if(true), чтобы предотвратить код сообщения о недоступности, только для тестирования. Но я думаю, что реальная проблема в том, что в моем коде есть некорректное исключение, которое я не могу зарегистрировать, потому что отсутствует printStackTrace(), иначе я должен получить консольный журнал. Также я получаю простой текст: Exception while removing reference. Но его не System.err сообщения, это просто смотреть, как System.out

Существуют ли какие-либо другие способы регистрации исключения, excpect консоли по умолчанию, и что может вызвать исключение быть необработанным?

Примечание: Я использую следующие внешние библиотеки: JNativeHook, JLayer, Apache Commons IO

Full GitHub repo Исключение должно происходить в CsgoSounds.java на линии 944

ОС: Windows 10, JRE версии: 1.8.0_60

+1

есть множество вариантов. консолей, протоколов регистрации ... – Paul

+0

Да, но проблема в том, что у меня есть предыдущее исключение, которое кажется необработанным, и поэтому я не думаю, что консольное ведение журнала будет работать. – Einstein

+0

Где вы ожидали просмотра исключения? Или более конкретно: на какой консоли? Вы запускаете eclipse/intelli/любую другую среду IDE или отслеживаете командную строку? – bully

ответ

0

Проверены Исключения и непроверенные (все, что расширяет исключение во время выполнения).

Компилятор заставляет вас иметь дело с проверенными исключениями (с заявлением об улове или броском). Вы не обязаны иметь дело с исключениями Unchecked. Но вы можете просто добавить попытку поймать свой код, а затем вы можете вызвать printstacktrace на нем.

+0

Действительно ли вы думаете, что будет работать упаковка нескольких тысяч строк кода в try catch? Я всегда думал, что Eclipse напоминает мне об проверенных исключениях, иначе код не будет компилироваться. Кроме того, похоже, что это не привело бы к сбою JVM, чтобы больше не отвечать на RuntimeExceptions. – Einstein

0

JNativeHook блокировал все выходы консоли. Мне пришлось сначала включить функцию.

Logger logger = Logger.getLogger(GlobalScreen.class.getPackage().getName()); 
       logger.setLevel(Level.WARNING); 

выполнил эту работу.

+0

. Каким уровнем журнала вы были прочно установлены? У вас есть трассировка стека, которая включает JNativeHook? По умолчанию консольный вывод не должен блокироваться. Это почти похоже на то, что вы выбрали исключение во время выполнения для обратного вызова собственного события? –

Смежные вопросы