2010-02-03 3 views
1

데스크톱 응용 프로그램의 경우 프로그램이 충돌 할 때 GUI에서 스택 추적을 보는 것이 유용합니다. 필자는 System.err을 모든 오류 메시지를 GUI 구성 요소와 텍스트 파일로 리디렉션하는 자체 오류 처리기로 대체하여 Java에서이 기능을 구현했습니다.Java : GUI에서 충돌 표시가 표시되지만 경고를 표시하지 않습니다.

문제 : 충돌이 발생할 때 System.err에 기록하는 라이브러리 (예 : Apache POI)는 간단한 경고 메시지 만 출력합니다. 이로 인해 크래시 창이 불필요하게 팝업됩니다. 제 질문은, (1) 경고 메시지의 경우에 그것을 보여주지 않는 동안 (2) 프로그램이 충돌 할 때 stacktrace를 보여주는 방법을 아는 사람이 있습니까?

[편집] 내 GUI는 SWT로 작성되었습니다.

답변

2

자신 만의 예외 처리기를 설치할 수 있습니다. 스윙에 대한 한 가지 기술은 여기에서 설명합니다 : http://ruben42.wordpress.com/2009/03/30/catching-all-runtime-exceptions-in-swing/. 에릭 버크도 nice article on this topic입니다. 또 다른 일반적인 기술은 스레드가 예외로 인해 죽을 때 호출되는 Thread.setDefaultUncaughtExceptionHandler을 사용하는 것입니다 (참조 된 첫 번째 기사의 주석에 따르면 스윙 스레드는 죽지 않으므로 캐치되지 않은 예외 핸들러를 설정하는 것이 스윙에서는 작동하지 않지만 에릭의 기사에서는 기술).

예외 처리기는 표준 출력/오류 스트림을 사용하여 다른 코드를 신경 쓰지 않고 오류를 표시하거나 기록하거나 원하는 작업을 수행 할 수 있습니다.

2

잘못된 각도에서 문제가 다가오고 있다고 생각합니다. System.err에 출력이있을 때뿐만 아니라 예외가있을 때 대화 상자를 표시해야합니다. System.err는 로깅 유틸리티와 비슷합니다.

모든 검사 예외의 경우 코드에서 대소 문자를 처리해야합니다. 대화 상자를 팝업하거나, 로그하거나, 무시하십시오 (이 경우 실제로 그렇게하는 것이 안전하다는 것을 의미합니다).

확인되지 않은 나머지 예외를 잡으려면 다음과 같이 할 수 있습니다 : http://www.javaspecialists.eu/archive/Issue081.html 당신이 그걸 얻고 있는지 확인하십시오.

관련 문제