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