Кажется, моя Android-студия не хочет прерывать какое-либо исключение по умолчанию. Включение разрыва "Любое исключение" начинает ломаться в реальных библиотеках JDE. Есть ли способ заставить его разбиться только на исключения из моего кода?
Переход из юниверса Visual Studio, ища здесь поведение отладки VS по умолчанию.
Ответ 1
Чтобы разбить все исключения, поймать или не удалось:
- Откройте окно "Точки останова" через Выполнить → Просмотреть точки останова.
- Появится диалоговое окно Breakpoints. На левой панели прокрутите страницу вниз. Выберите Любое исключение в разделе Контрольные точки исключения Java
- При выборе Любое исключение на правой панели настройте следующим образом:
- Приостановить: отмечен
- Все: выбрано
- Условие:
!(this instanceof java.lang.ClassNotFoundException)
- Уведомления: как Исключенное исключение и Недоступно исключение
![Breakpoints dialog]()
- Установите флажок Фильтры классов, чтобы включить фильтрацию классов (как указано @Scott Barta). Затем нажмите кнопку ... (elipsis), чтобы открыть диалоговое окно Class Filters. Задайте шаблоны пространства имен классов, нажав кнопку
(Добавить шаблон). Войти:
-
com.myapp.*
(замените это префиксом пространства имен вашего приложения)
-
java.*
(обратите внимание: в соответствии с вопросом OP оставьте это, чтобы НЕ ломаться в библиотеках Java)
-
android.*
(как указано выше, не нужно просто отлаживать собственный код приложения)
- При необходимости добавьте дополнительные пространства имен (например, сторонние библиотеки)
![Class Filters]()
- Нажмите ОК, затем отпустите диалог "Точки останова".
Ответ 2
Если вы откроете окно Breakpoints, это даст вам довольно много вариантов, чтобы его условно сломать или нет. Здесь вы найдете "Фильтры классов" - вы можете указать подстановочное выражение, например, с помощью пути пакета Java, и оно будет ломаться только для исключений, генерируемых из соответствующих классов.
Ответ 3
Чтобы обойти все исключения в коде и другие исключения, если не удалось:
Эти методы отфильтровывают типы исключений, которые запускаются во время нормальной работы (не очень ли они исключительны?). Он не использует фильтр класса, поскольку он слишком сильно отфильтровывает; ошибки в вашем коде часто заставляют классы времени выполнения генерировать исключения (например, доступ к списку массивов за конец).
-
Включить исключение исключений Java исключений/исключение только для исключений uncaught.
-
Добавьте новый Java Breakpoint для Exception (java.lang)
класса для исключений catch и uncaught. Включите Условие и установите для этого значение:
!(this instanceof java.lang.ClassNotFoundException || this instanceof android.system.ErrnoException || this instanceof java.io.FileNotFoundException || this instanceof javax.net.ssl.SSLHandshakeException || this instanceof javax.net.ssl.SSLPeerUnverifiedException || this instanceof android.system.GaiException || this instanceof java.net.SocketTimeoutException || this instanceof java.net.SocketException || this instanceof java.security.NoSuchAlgorithmException)
Добавить в список исключений при условии любых других исключений, исключающих исключение, которые вы встречаете. (BTW, используя java.lang.Exception
, является способом эффективного получения второй записи "Любое исключение".)