IntelliJ에“예외 중단”이 있습니까?


318

첫 번째 예외 발생시 디버깅을 자동으로 중단하는 기능이 있습니까?

그래서 우리는

  1. 신청 시작
  2. 예외를 던지는 일을하다
  3. 예외가 발생한 곳에서 IntelliJ가 강조 표시됩니다.

잡히지 않은 예외에 대해서만 깨고 싶습니까?
David Ferenczy Rogožan

답변:



158

대화 상자를 빠르게 여는 방법은 Ctrl+ SHIFT+ F8(Mac : Cmd+ SHIFT+ F8)를 누른 다음 예외 중단 점 탭을 클릭하는 것입니다. 이것이 마지막으로 본 탭인 경우에도 여전히 선택되어 예외를 설정하거나 해제 할 때 쉽게 넘길 수 있습니다.

이로 인해 예외가 발생한 코드 (또는 라이브러리 코드)에서 IntelliJ가 중단됩니다. 특히 예외 처리에서 스택이 실행되기 전에 catch / finally 블록을 찾기 전에 '첫 번째 기회'를 얻습니다.


팁 : Java는 클래스를로드 할 때 내부적으로 많은 예외를 발생시키는 경향이 있으므로 모든 예외를 위반하면 상당히 지루할 수 있습니다. 좋은 소식은 조건 필드를 사용하여 특정 유형의 예외를 제외 할 수 있다는 것 입니다.

예를 들면 다음과 같습니다.

!(this instanceof java.lang.ClassNotFoundException)

와 같은 여러 조건을 함께 연결할 수 있습니다 &&.

여기에 이미지 설명을 입력하십시오


9
"Java 시스템이 아닌 내 프로젝트에서만 예외 발생"을 알리는 방법이 있습니까?
Damn Vegetables

16
"선택된 중단 점에 도달 할 때까지 사용 안함 :"를 잊지 마십시오. 모든 Java 또는 기타 라이브러리를로드하고 설정 한 후에 코드에 중단 점을 설정 하십시오 . 그런 다음 드롭 다운에서 중단 점을 선택하고 기다리십시오. 중단 점에 도달 한 다음 계속 진행하면 새로운 Caught & Uncaught Exception 필터가 시작됩니다. :)
Louis St-Amour

1
Breakpoints 대화 상자의 맨 아래에있는 "Catch exception"과 "Catch 예외"를 모두 확인하는 것을 잊지 마십시오.
Robino

59

에서 하게 IntelliJ IDEA (14)는 다음으로 이동 :

Run -> View Breakpoints -> Check "Java Exceptions Breakpoints" -> Uncheck "Caught Exceptions"

선택을 취소하지 않으면 내부 예외가 발생할 Caught Exceptions때마다 실행이 중지됩니다 Java Framework.


1
실행-> 중단 점보기 ...-> "Java 예외 중단 점 점검"-> "
Jonas

2
불행히도, 이것은 "catch exceptions"를 비활성화 한 후에도 여전히 나를 위해 잡힌 예외가 발생합니다.
Carcigenicate

이것은 내가 말하고자하는 매우 중요한 정보입니다. 그렇지 않으면 정보 가치가없는 예외적 인 지옥입니다. 주로 Grails와 같은 큰 프레임 워크를 사용할 때.
David Ferenczy Rogožan

일반적으로 일반적인 웹 응용 프로그램에서는 모든 예외가 포착되는 데 사용되며 모든 것을 포착하고 형식을 지정하는 최상위 catch 블록이 있기 때문에 예외가 발생했는지 여부와 상관없이 두 가지 옵션이 모두 나쁩니다. 사용자에게 제시. 따라서 예외가 발견되지 않으면 아무것도 요청하지 않으며 단일 요청 동안 수백 번 중단됩니다. 둘 다 쓸모없는 :(
David Ferenczy Rogožan

당신이 그것을 사용하는 방법을 알고 있다면 아무것도 쓸모가 없습니다.
Alessandro Flati

12

그렇습니다. IntelliJ IDEA의 중단 점 대화 상자에서 예외 중단 점 ( "예외"일 수 있음)을 정의해야합니다.

원하는 경우 조건 또는 클래스 또는 예외 또는 미 발견 예외에 관심이 있는지 여부를 기준으로 예외를 필터링 할 수 있습니다.


7

왼쪽 상단의 작은 "+"기호를 클릭하면 새 중단 점을 추가 할 수 있습니다. 예외 중단 점을 선택하면 예외 클래스를 입력하여 중단 할 수있는 대화 상자가 나타납니다 (모든 예외를 중단하지 않으려는 경우).


0

intellij의 최신 버전에서 실행 > 중단 점보기 아래에 있습니다.

그런 다음 Java 예외 중단 점 -> 모든 예외를 확인하십시오 .

예외를 디버깅하는 좋은 방법은 기본 앱 패키지와 와일드 카드를 사용하는 것 .*입니다. 이 방법으로 다른 모든 라이브러리 예외를 건너 뜁니다. 대부분의 경우 다른 라이브러리가 아닌 앱에서 예외를 찾고 있기 때문에 (많은 예외가 될 수 있음).

예를 들어 이미지에 표시된 것처럼 com.gs.mercury.*앱에서 예외가 발생할 때마다 중단 하는 데 사용 합니다. 예외 상황을 처리하고 (예외 상황을 처리하고 정상적인 상황의 흐름을 처리하지 않기 위해) 예외를 사용하는 경우 거의 항상 원하는 예외에 도달 할 때만 중지됩니다.

PD. 꽤 유용한 Catch 클래스 필터 를 지적하기 위해 대답이 추가되었습니다 .

중단 점

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.