2011-02-08 52 views
0

在我的(图形)Java应用程序在某些情况下,我希望用户看到一个异常,因为没有什么比我能做的更好。默认异常处理程序显式处理异常的首选方式是什么?

我的第一个想法是只让异常泡沫,直到应用范围的默认异常处理程序捕捉它,但在某些情况下,这是不可能的

什么是首选的方式(主要是因为ActionListener接口)将异常重定向到默认异常处理程序?

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

回答

2

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

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

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

+0

在运行时异常中封装已检查的异常是关键。谢谢! – 2011-02-08 11:34:01

0

默认的异常处理程序简单地做一下:

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

如果这是适合您的应用程序,你可以自己做。但是,如果您想将其展示给用户,可能与(J)TextArea的对话更好。