2011-03-01 3 views
9

Java 응용 프로그램에서 타사 라이브러리를 사용하고 있습니다. 이 타사 라이브러리는 모든 응용 프로그램 시작시 사용자 정의 uncaught 예외를 발생시킵니다. 예외는 무해하며 타사 라이브러리에 내부적으로 기록 목적으로 만 사용됩니다. 이 예외가 잡히지 않기 때문에 이클립스 IDE가 디버그 퍼스펙티브로 전환하고 애플리케이션을 시작할 때마다 스레드 실행을 일시 중단하여 문제를 알려준다. 필자는이 문제를 무시하고 매번 디버깅을 재개하도록 Eclipse에 수동으로 알려야합니다. 이것은 매우 성가신 일입니다. 이 문제를 해결하기 위해 제 3 자 라이브러리를 변경할 수 없습니다.Eclipse에서 특정 유형의 포획되지 않는 예외를 무시하는 방법은 무엇입니까?

잡히지 않은 예외의 특정 유형을 무시하도록 Eclipse IDE에 지시 할 수있는 방법이 있습니까?

"단계 필터링"을 시도했지만 사용자 정의 캐치되지 않은 예외가 스택 추적에 없기 때문에 디버거에서 필터링되지 않습니다. 이것은 단계 필터링에 대한 첫 발을 내디뎠 기 때문에 잘못 사용했을 수 있습니다. 다음은 스택 추적 샘플입니다.

편집 :

jluzwick의 기술적으로 일할 수있는 이클립스의 모든 캐치되지 않는 예외를 비활성화 한 후에 캐치되지 않는 예외를보고 우리 자신의 로거를 사용하여 주위에 작업하지만 적합하지 않습니다 그리고 우리는 일을하는 경우 놓칠 수있는 가능성이 우리의 로거가 고장났습니다.

mazaneicha의 해결책이 올바른 방향으로 보이는 것처럼 보였지만 원하는 방식대로 작동하지 못했습니다. 이는 내 부분의 사용자 오류 때문일 수 있습니다.

jluzwick과 mazaneicha는 모두이 문제에 대한 해결 방법이 있었지만 Konstantin Komissarchik은이 문제를 해결하기 위해 라이브러리 작성자에게 다시 푸시해야한다는 점에서 "올바른"대답을했습니다. 기술 솔루션이 올바른 솔루션이 아닌 경우가 있습니다.

답변

11

오래된 스레드지만, 조금 더 추가 할 것으로 생각했습니다.

적어도 이클립스 인디고에서

는 : 디버그 Perspective-에서> 중단 점보기 :

  1. 당신이 일시 정지 할 (잠재적와 서브 클래스) 예외에 대한 중단 점을 지정합니다. 이 작업은 "Add Java Exception Breakpoint"를 클릭하여 수행됩니다. J 및 느낌표 인 아이콘.
  2. 오른쪽
  3. 당신이 무시하고자하는 클래스 또는 패키지를 지정 중단 점을 클릭하고 "중단 점 속성"
  4. 로 이동 "필터링"을 선택합니다. 그러면 목록에 추가됩니다. 그냥 내가 일반적인 예외 중단 점으로 NullPointerExceptions를 지정할 수 있도록이를 사용하는 경향이

(지정된 위치에 정지하지 않습니다)하지만, 세 번째 출신 패키지를 무시 독점 있다고 서술하도록 선택을 취소해야 파티 도서관.

+0

내 생각에 이것은 선택된 답변보다 나은 답변입니다. 나는 "클래스"를 제외하고는 매우 좋은 행운이 없었으며 대신 "패키지"기반 제외 (Eclipse Galileo)를 사용해야한다는 것에 유의할 것입니다. 고마워요 @ 제프! –

+0

"오래된 끈 [...]"그래서? 유용할만한 무언가를 제공 할 때 얻을 수있는 바보 같은 소리에 대해 망설이지 마라. 이전 토론에 가치있어. – async

2

코드에서이 문제를 해결하는 것이 좋습니다. 이 라이브러리를 초기화하는 코드에서 코드에서 스택을 전파하는 대신 "정상적인"동작으로 간주되지 않는이 예외를 잡습니다.

+3

라이브러리는이 예외가 발생하는 자체 스레드 풀을 생성합니다. try/catch 라이브러리 초기화를 래핑 할 수 없습니다. 예외가 발생하는 호출 스택에 대한 제어권이 없습니다. – Tansir1

+1

그런 다음 문제가 있습니다. 라이브러리 제공 업체에 연락하여 버그를 신고하는 것이 좋습니다. 이 문제를 무시하도록 디버그 세션을 구성하더라도 런타임/프로덕션 환경에 여전히 남아 있습니다. 잡히지 않은 예외를 무시하도록 Eclipse 런타임에 알릴 수 없습니다. 오류 로그로 바로갑니다. –

+4

이것은 머리카락을 나누는 것이지만, 잡히지 않은 모든 예외를 무시하도록 Eclipse에 지시 할 수 있습니다. 특정 유형을 무시하는 방법을 찾고 싶었습니다. Windows-> Preferences-> Java-> Debug로 이동하여 "catch되지 않는 예외에 대한 실행 일시 중지"를 선택 취소하면됩니다. 이것은 매우 나쁜 생각이지만 할 수 있습니다. 나는 어떤 선택권이 있다고 생각하지는 않았지만 여기에서 물어볼 수는 없다고 생각했다. 도와 주셔서 감사합니다. – Tansir1

1

시도해 보셨습니까?

이동 창 -하기> 특정 예외를 해제하는 방법이 잘 모르겠어요

"를 캐치되지 않는 예외에 실행을 일시 중단"선택을 취소 "실행을 일시 중단"에서 환경 설정 -> 자바 -> 디버그

,하지만 나는 틀릴 수 있습니다. 플러그인을 실행하는 플러그인이있을 수 있습니다.

+0

당신이 말했듯이 그것은 특정 예외에 대해서는 작동하지 않습니다. 이로 인해 Eclipse는 모든 것을 무시합니다. 나는 여전히 내 자신의 코드에서 이슈를 찾기 위해 다른 모든 것을 잡기를 원한다. – Tansir1

+0

@ Tansir1 잡히지 않은 예외는 여전히 정확하지만 로거를 통해보고됩니다. 자신의 예외 중 하나가 던져지는 것을 발견하면 던져진 부분에서 중단 점을 설정할 수 있습니다. – jluzwick

1

디버그 퍼스펙티브, 중단 점보기에서 Java 예외 브레이크 포인트 (작은 문자 J 및 느낌표, J!가있는 아이콘)를 클릭하십시오. 나타나는 Java 예외 브레이크 포인트 추가 창에서 성가신 예외를 찾아서 "잡히지 않은 예외에 일시 중단"상자의 선택을 취소 할 수 있습니다.

0

간단한 시도가 필요한 것처럼 들립니다.

MyException e = new MyException; 
try { 
     throw new e; 
} catch (MyException e) { 
     e.printStackTrace(); 
} 

이렇게하면 예외가 throw 될 수 있지만 무시하고 프로그램을 계속 허용합니다. 파일에 기록하려면 'PrintWriter.println (e.printStackTrace());'를 사용하십시오.

내가 원하는 것을 얻고 행복하게 코딩했으면 좋겠다.

+0

Konstantin Komissarchik의 답변보기. 나는 예외를 감쌀 수 없도록 호출 스택을 제어하지 못했습니다. 그것은 내 자신의 코드가 아닌 제 3 자 라이브러리에있었습니다. – Tansir1

관련 문제