Чи є функція, яка автоматично порушує налагодження при появі першого винятку?
Так ми
- запустити додаток
- робити щось, що кидає виняток
- отримав IntelliJ виділену виділену лінію, де сталося виключення.
Чи є функція, яка автоматично порушує налагодження при появі першого винятку?
Так ми
Відповіді:
Виконати | Переглянути точки перерви | Виключення Точки перерви
Швидкий спосіб спливати діалогове вікно - натиснути Ctrl+ SHIFT+ F8(на Mac: Cmd+ SHIFT+ F8), а потім перейти на вкладку точок перерви винятку. Якщо це була остання вкладка, яку ви переглядали, вона все одно буде обрана, що дозволяє легко перемикати перерви на винятки, включаючи та вимикаючи.
Це призведе до того, що IntelliJ зламається в точці коду (або бібліотечного коду), де було піднято виняток. Зокрема, ви отримуєте "перший шанс" при обробці винятків, перш ніж стек буде пройдено, шукаючи лову / нарешті блоки для виконання.
Порада: Java, як правило, кидає багато винятків внутрішньо під час завантаження класів, тож цей перелом на всі винятки може стати досить стомлюючим. Хороша новина полягає в тому, що ви можете виключити певні типи виключень, використовуючи поле умови .
Наприклад:
!(this instanceof java.lang.ClassNotFoundException)
Ви можете поєднати кілька таких умов разом із &&
.
У IntelliJ IDEA 14 перейдіть до:
Run -> View Breakpoints -> Check "Java Exceptions Breakpoints" -> Uncheck "Caught Exceptions"
Якщо ви не знімете позначку, Caught Exceptions
виконання буде припинено кожного разу, коли Java Framework
викидає внутрішній виняток.
Якщо натиснути на маленький знак "+" у верхньому лівому куті, ви можете додати нову точку розриву. Якщо ви виберете пункт «Точка перерви у винятку», ви отримаєте невелике діалогове вікно, де ви можете ввести клас винятків, на який потрібно перерватися (якщо ви не хочете перерватися на всі винятки).
У новіших версіях на intellij в розділі Виконати > Переглянути точки перерви .
Потім встановіть прапорець Точки зупинки винятку Java -> Будь-яке виключення .
Хороший спосіб налагодження винятків - це використання основного пакету програм та підстановки .*
. Таким чином ви пропускаєте всі винятки з інших бібліотек, оскільки більшість випадків шукаєте винятки, викинуті вашим додатком, а не будь-якою іншою бібліотекою (що може бути безліч винятків).
Як приклад, показаний на зображенні, яке я використовую com.gs.mercury.*
для перерви кожного разу, коли додаток видає виняток. Якщо ви використовуєте винятки для того, для чого вони призначені (для вирішення виняткових випадків і не для обробки нормальних ситуацій), ви зупинитесь лише тоді, коли майже весь час досягнете бажаного винятку.
ПД. відповідь додана лише для того, щоб вказати на досить корисний фільтр класу Catch .