[debugging] Android Studio IDE : 예외 발생시 중단

내 Android Studio는 기본적으로 예외를 위반하지 않는 것 같습니다. “모든 예외”에서 break를 활성화하면 실제 JDE 라이브러리 내에서 break가 시작됩니다. 내 코드 내 예외에서만 강제로 중단시키는 방법이 있습니까?

Visual Studio 유니버스에서 제공되며 여기에서 기본 VS 디버그 동작을 찾습니다.



답변

잡거나 잡지 않은 모든 예외를 위반하려면 :

  1. 실행-> 중단 점보기 를 통해 중단 점 창을여십시오 .
  2. 중단 점 대화 상자가 나타납니다. 왼쪽 창에서 맨 아래로 스크롤하십시오. Java 예외 중단 점 에서 모든 예외를 선택하십시오.
  3. 함께 예외가 선택, 오른쪽 창에서, 구성은 다음과 같습니다 :
    • 일시 중지 : 확인
    • 모두 : 선택
    • 질환: !(this instanceof java.lang.ClassNotFoundException)
    • 공지 사항 : 모두 잡은 예외catch되지 않은 예외 선택

중단 점 대화 상자

  1. 디버거 중단 해야하는 라이브러리의 네임 스페이스를 지정하는 필터를 정의 하십시오. 클래스 필터 확인란을 선택하여 클래스 필터링을 활성화하십시오 ( @Scott Barta에서 언급 한대로 ). 그런 다음 (줄임표) 단추를 클릭하여 클래스 필터 대화 상자를여십시오. 패턴 추가(패턴 추가) 버튼 을 클릭하여 클래스 네임 스페이스 패턴을 지정 하십시오. 시작하다:
    • com.myapp.* (앱의 네임 스페이스 접두어로 대체하십시오)
    • java.* (참고 : OP의 질문에 따라 Java 라이브러리에서 중단되지 않도록 이것을 남겨 두십시오)
    • android.* (위와 같이 자체 앱 코드를 디버그하지 마십시오)
    • 필요에 따라 추가 네임 스페이스를 추가하십시오 (예 : 타사 라이브러리).

클래스 필터

  1. 를 눌러 확인 후 중단 점 대화 상자를 닫습니다.

답변

중단 점 창을 열면 조건부 중단 여부를 알 수있는 몇 가지 옵션이 제공됩니다. 여기서 찾고있는 것은 “클래스 필터”입니다. 예를 들어, Java 패키지 경로를 사용하여 와일드 카드 식을 지정할 수 있으며 일치하는 클래스에서 생성 된 예외에 대해서만 중단됩니다.


답변

포착되지 않은 경우 코드의 모든 예외 및 기타 예외를 위반하려면 :

이 메소드는 정상 작동 중에 런타임에서 발생하는 예외 유형을 걸러냅니다 (매우 예외적이지 않습니까?). 너무 많이 걸러 내기 때문에 클래스 필터를 사용하지 않습니다. 코드의 버그로 인해 런타임 클래스에서 예외가 발생하는 경우가 종종 있습니다 (예 : 마지막으로 배열 목록에 액세스).

  1. 포착되지 않은 예외에 대해서만 Java 예외 BreakPoints / 모든 예외 를 사용하십시오 .

  2. 잡힌 예외 와 잡히지 않은 예외 에 대해 클래스에 대한 새 Java 예외 BreakPoint 를 추가하십시오 . 조건을 활성화 하고 다음과 같이 설정하십시오.Exception (java.lang)

        !(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은 두 번째 “예외”항목을 효과적으로 얻는 방법입니다.)


답변