通过默认异常处理程序显式处理异常的首选方法是什么?

时间:2011-02-08 10:09:02

标签: java exception

在我的(图形)Java应用程序中,在某些情况下,我希望用户看到异常,因为我无能为力。

我的第一个想法是让异常泡沫,直到应用程序范围的默认异常处理程序捕获它,但在某些情况下它是不可能的(主要是因为ActionListener接口)

将异常重定向到默认异常处理程序的首选方法是什么?

是否有一种方法可以调用默认处理程序(Thread.defaultUncaughtExceptionHandlersun.awt.exception.handler),还是在默认的异常处理程序类中显式调用方法更好?

2 个答案:

答案 0 :(得分:2)

为所有非技术异常创建一个或多个异常类型。确保它延伸RuntimeException

如果您遇到应该通知用户的已检查异常,请将它们包装在您自己的类型中(但尝试给出一个不错的消息,而不仅仅是'nullpointer'或其他内容。)

在gui图层中,添加一个捕获自定义异常类型的图层。我建议你使用aop,但你也可以这么做。然后只需向用户显示错误消息,并记录堆栈跟踪。

答案 1 :(得分:0)

默认的异常处理程序只是这样做:

System.err.println("Exception on thread " + Thread.currentThread().getName());
ex.printStackTrace();

如果这适合您的应用程序,您可以自己完成。但是如果你想向用户展示它,可能会有一个带有(J)TextArea的对话框更好。