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. WinForms异常拦截器
- 4. Windsor拦截器异常
- 5. 异常增加拦截器
- 6. 拦截Ruby中的每个异常
- 7. 如何让PHPUnit停止拦截异常?
- 8. ASAN与gcc-5.2不拦截异常
- 9. GRPC客户端拦截异常Java
- 10. 如何拦截ZendFramework 3中的异常
- 11. Struts2的拦截器溢出异常
- 12. Web API - 拦截器 - 拦截异步控制器操作
- 13. 拦截器不拦截
- 14. CXF客户端异常:拦截器{XXX}已经抛出异常,现在平仓
- 15. 当拦截异常可能是可接受的情况
- 16. {XXX}/Service的PhaseInterceptorChain拦截器已抛出异常,现在展开
- 17. 如何拦截Tomcat上未捕获的异常?
- 18. 使用Unity拦截解决异常处理等交叉领域
- 19. Spring AOP的配置为拦截所有异常
- 20. LightInject - 拦截不拦截依赖关系
- 21. 如何为ILogger拦截拦截器
- 22. android上的拦截拦截器
- 23. EJB 3.1拦截器是“拦截器”吗?
- 24. 角 - 与请求拦截异步操作
- 25. Guice Provider拦截
- 26. SOAPUI SSL拦截
- 27. StructureMap拦截器
- 28. 拦截出口
- 29. struts2的拦截
- 30. Hibernate拦截器
+1只要确保您将原始异常传递给新构造函数,以便您可以看到完整的堆栈跟踪以及原因。 – 2010-07-04 14:24:50