Q
攔截異常
6
A
回答
6
異常翻譯:
這是一個好主意,不與沒有意義的終端用戶信息污染您的應用程序,而是創建有意義的異常和信息,這將轉化異常/錯誤發生在您的應用程序實施的深處。
根據@ Romain的評論,您可以使用Exception(Throwable cause)構造函數來跟蹤較低級別的異常。
從Effective Java 2nd Edition
,第61項:
[...]高層應該抓住 較低級別的例外,在其 地方,拋出異常,可以是 在higher-來解釋級別 抽象。這個成語被稱爲 異常轉換:
// Exception Translation
try {
// Use lower-level abstraction to do our bidding
...
} catch(LowerLevelException e) {
throw new HigherLevelException(...);
}
2
您可以使用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中,您可以使用SwingX中的org.jdesktop.swingx.JXErrorPane
來顯示很好的錯誤彈出窗口,通知用戶有關異常。
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. 攔截C++異常
- 2. Spring AOP和異常攔截
- 3. 如何攔截IQueryable異常
- 4. 異常增加攔截器
- 5. Windsor攔截器異常
- 6. 攔截Http端點異常[Mule ESB]
- 7. REST資源異常攔截器
- 8. Struts2的攔截器溢出異常
- 9. 如何攔截ZendFramework 3中的異常
- 10. 異常翻譯攔截器。好主意?
- 11. GRPC客戶端攔截異常Java
- 12. ASAN與gcc-5.2不攔截異常
- 13. 如何讓PHPUnit停止攔截異常?
- 14. 從CXF攔截器傳播異常到異常映射器
- 15. Web API - 攔截器 - 攔截異步控制器操作
- 16. 攔截器不攔截
- 17. java攔截器不攔截
- 18. CXF客戶端異常:攔截器{XXX}已經拋出異常,現在平倉
- 19. {XXX}/Service的PhaseInterceptorChain攔截器已拋出異常,現在展開
- 20. 如何攔截C++中ImageMagick拋出的異常?
- 21. Jersery ExceptionMapper不攔截Spring AspectJ註釋方面拋出的異常?
- 22. 爲什麼Unity攔截無法捕捉異常?
- 23. 使用Unity攔截解決異常處理等交叉領域
- 24. 如何攔截Tomcat上未捕獲的異常?
- 25. Symfony和PHPUnit:拋出異常但未被setExpectedException攔截
- 26. 向Apache HttpClient處理異常的自定義protcol攔截器
- 27. 如何攔截燒瓶中的所有異常?
- 28. Spring AOP的配置爲攔截所有異常
- 29. 當攔截異常可能是可接受的情況
- 30. 如何攔截WCF中序列化期間發生的異常?
+1只要確保您將原始異常傳遞給新構造函數,以便您可以看到完整的堆棧跟蹤以及原因。 – 2010-07-04 14:24:50