Подтвердить что ты не робот

IntelliJ IDEA: Как создать контрольную точку исключения, которая останавливается во всех исключениях * кроме * ClassNotFoundException?

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

Итак, было бы хорошо, если бы я мог создать контрольную точку исключения, которая игнорирует ClassNotFoundExceptions и останавливается на всем остальном.

4b9b3361

Ответ 1

Этот ответ почти такой же, как у Миндаса, но подробности были достаточно для того, чтобы я проигнорировал его предложение в первый раз и беспокоился о том, что Intellij поддерживает парней/девушек (спасибо Сержу и Юджину):

  • Откройте окно "Точки останова" и перейдите на вкладку "Исключительные точки останова"
  • Выделите и активируйте контрольную точку "Любое исключение"
  • Активируйте условие "Условие" и введите следующее:

    !(this instanceof java.lang.ClassNotFoundException)
    

IDEA немедленно удалит "java.lang" (версия 11.01), но для этого решения требуется. Если вы не используете это, вы получите всплывающее окно ClassNotFound (ирония иронии).

Я выяснил, что многие "стандартные" библиотеки генерируют исключения в их нормальном потоке операций. Когда вы успешно проигнорируете ClassNotFoundException, вы обнаружите, что другие неожиданно появляются. Ничто никогда не бывает легким.

Ответ 2

По какой-то причине я продолжал "не оценивать выражение точки останова", когда я ставил условие ClassNotFoundException в соответствии с правилами останова "любого исключения". Я смог обойти это, создав специальный элемент точки останова "любое исключение":

  • Откройте окно точек останова из представления отладки.
  • Снимите флажок "Любое исключение", чтобы мы не останавливались ни при каких обстоятельствах, используя элемент по умолчанию.
  • Нажмите знак +, щелкните точки исключения исключений Java, установите флажок "Включить не-проектные классы", введите "java.lang.Exception" в поле, выберите результат, который отображается в поле.
  • Выберите элемент "Исключение", созданный в списке (в разделе "Любое исключение" ), и поставьте

    !(this instanceof java.lang.ClassNotFoundException) 
    

    в поле условия.

Ответ 3

  • щелкните правой кнопкой мыши точку останова и нажмите Properties
  • перейти в область Conditions
  • установите флажок Condition
  • тип !(myException instanceof ClassNotFoundException)