IllegalMonitorStateException

У меня только есть потребность в нем в Основном (т.е. VB, VBScript, и т.д.) и пакетные файлы. Я тогда только использую его для обработки ошибок. В Основном я ухаживаю только за использованием "на ошибке goto". В пакетных файлах я должен использовать его, потому что еще нет команда. Я тогда только использую их как вперед переходы к значимым маркировкам.

11
задан BeefCake__beefcake 4 December 2009 в 23:48
поделиться

3 ответа

Детали должны быть указаны при создании исключения (конструктор, верно?), И если вы не создаете его, у вас нет возможности предоставить детали.

Вы можете проанализировать StackTrace исключения. Он показывает классы, методы и строку источника, которые были вызваны, чтобы вызвать исключение.

Одна из причин IllegalMonitorStateException - это попытка ожидания объекта без синхронизации с ним. См. Javadoc .

Существуют и другие возможные причины, и исключение может быть вызвано некоторой библиотекой / внешним кодом. Думаю, помочь может только StackTrace ...

14
ответ дан 3 December 2019 в 04:13
поделиться

Как мы можем использовать это, чтобы улучшить идея, где ошибка в нашем коде? Что еще мы можем сделать? (помимо отладки, которую мы в настоящее время делаю), чтобы определить сбой функции или строки?

В этом случае печать сообщения сама по себе, вероятно, не поможет. Вам нужна трассировка стека с именами исходных файлов и номерами строк .

  1. Убедитесь, что все соответствующие файлы / JAR-файлы ".class" были созданы с включенной отладочной информацией о номерах файлов и строк. Это значение по умолчанию, но компиляция с «-g: none» удалит это ... как и большинство обфускаторов JAR-файлов.

  2. Затем добавьте блок try / catch, чтобы перехватить IllegalMonitorStateException и либо вызовите ex.printStackTrace () или зарегистрируйте исключение.

Из трассировки стека вы сможете увидеть, какая строка кода вызвала исключение. Скорее всего, это был вызов Object.wait (...) или что-то в этом роде.

2
ответ дан 3 December 2019 в 04:13
поделиться

Вы должны распечатать трассировку стека, которая даст вам точное местоположение в источнике.

К сожалению, JVM нередко генерирует исключения, не содержащие подробных сообщений для помощи в отладке.

0
ответ дан 3 December 2019 в 04:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: