모든 예외를 제외하고 사용자 친화적 인 메시지를 표시하려면 사용자 지정 예외에 사용하고 싶습니다.예외 차단하기
이 작업을 수행하는 가장 좋은 방법은 무엇입니까? Swing의 EDT를 방해하지 않도록주의해야합니까?
모든 예외를 제외하고 사용자 친화적 인 메시지를 표시하려면 사용자 지정 예외에 사용하고 싶습니다.예외 차단하기
이 작업을 수행하는 가장 좋은 방법은 무엇입니까? Swing의 EDT를 방해하지 않도록주의해야합니까?
예외 번역 :
그것은 최종 사용자에게 아무런 의미가없는 메시지와 함께 응용 프로그램을 오염시키지하는 것이 좋습니다, 대신 예외를 변환합니다 의미있는 예외 메시지를 생성/오류가 앱 구현의 어딘가에서 일어났습니다.
@ Romain의 설명에 따르면 Exception(Throwable cause) 생성자를 사용하여 하위 수준의 예외를 추적 할 수 있습니다. Effective Java 2nd Edition
에서
, 항목 61 :
[...] 낮은 수준의 예외를 포착하고, 자신의 장소에서 수 있습니다 예외가 발생한다 상위 계층은 상위 -의 관점에서 설명 레벨 추상화. 이 관용구는 예외 번역으로 알려져 있습니다 :
// Exception Translation
try {
// Use lower-level abstraction to do our bidding
...
} catch(LowerLevelException e) {
throw new HigherLevelException(...);
}
이
당신은 자신을 관리하지 않은 모든 예외를 캐치하는 java.lang.Thread.UncaughtExceptionHandler
을 사용할 수 있습니다
import java.lang.Thread.UncaughtExceptionHandler;
public class MyUncaughtExceptionHandler implements UncaughtExceptionHandler {
public void uncaughtException(Thread t, Throwable e) {
Frame.showError("Titel", "Description", e, Level.WARNING);
e.printStackTrace();
}
}
앱에 등록합니다 :
public static void main(String[] args) {
Thread.setDefaultUncaughtExceptionHandler(new MyUncaughtExceptionHandler());
}
그리고 GUI에서 org.jdesktop.swingx.JXErrorPane
을 SwingX에서 사용하면 사용자에게 예외에 대해 알리는 멋진 오류 팝업.
public static void showError(String title, String desc, Throwable e,
Level level) {
JXErrorPane.showDialog(this, new ErrorInfo(title,
desc, null, null, e, level, null));
}
+1 원래 예외와 전체 스택 추적을 볼 수 있도록 새 예외 생성자를 전달하십시오. –