У меня только есть потребность в нем в Основном (т.е. VB, VBScript, и т.д.) и пакетные файлы. Я тогда только использую его для обработки ошибок. В Основном я ухаживаю только за использованием "на ошибке goto". В пакетных файлах я должен использовать его, потому что еще нет команда. Я тогда только использую их как вперед переходы к значимым маркировкам.
Детали должны быть указаны при создании исключения (конструктор, верно?), И если вы не создаете его, у вас нет возможности предоставить детали.
Вы можете проанализировать StackTrace исключения. Он показывает классы, методы и строку источника, которые были вызваны, чтобы вызвать исключение.
Одна из причин IllegalMonitorStateException
- это попытка ожидания объекта без синхронизации с ним. См. Javadoc .
Существуют и другие возможные причины, и исключение может быть вызвано некоторой библиотекой / внешним кодом. Думаю, помочь может только StackTrace ...
Как мы можем использовать это, чтобы улучшить идея, где ошибка в нашем коде? Что еще мы можем сделать? (помимо отладки, которую мы в настоящее время делаю), чтобы определить сбой функции или строки?
В этом случае печать сообщения сама по себе, вероятно, не поможет. Вам нужна трассировка стека с именами исходных файлов и номерами строк .
Убедитесь, что все соответствующие файлы / JAR-файлы ".class" были созданы с включенной отладочной информацией о номерах файлов и строк. Это значение по умолчанию, но компиляция с «-g: none» удалит это ... как и большинство обфускаторов JAR-файлов.
Затем добавьте блок try / catch, чтобы перехватить IllegalMonitorStateException
и либо вызовите ex.printStackTrace ()
или зарегистрируйте исключение.
Из трассировки стека вы сможете увидеть, какая строка кода вызвала исключение. Скорее всего, это был вызов Object.wait (...)
или что-то в этом роде.
Вы должны распечатать трассировку стека, которая даст вам точное местоположение в источнике.
К сожалению, JVM нередко генерирует исключения, не содержащие подробных сообщений для помощи в отладке.