在我的(图形)Java应用程序中,在某些情况下,我希望用户看到异常,因为我无能为力。
我的第一个想法是让异常泡沫,直到应用程序范围的默认异常处理程序捕获它,但在某些情况下它是不可能的(主要是因为ActionListener
接口)
将异常重定向到默认异常处理程序的首选方法是什么?
是否有一种方法可以调用默认处理程序(Thread.defaultUncaughtExceptionHandler
或sun.awt.exception.handler
),还是在默认的异常处理程序类中显式调用方法更好?
答案 0 :(得分:2)
为所有非技术异常创建一个或多个异常类型。确保它延伸RuntimeException
。
如果您遇到应该通知用户的已检查异常,请将它们包装在您自己的类型中(但尝试给出一个不错的消息,而不仅仅是'nullpointer'或其他内容。)
在gui图层中,添加一个捕获自定义异常类型的图层。我建议你使用aop,但你也可以这么做。然后只需向用户显示错误消息,并记录堆栈跟踪。
答案 1 :(得分:0)
默认的异常处理程序只是这样做:
System.err.println("Exception on thread " + Thread.currentThread().getName());
ex.printStackTrace();
如果这适合您的应用程序,您可以自己完成。但是如果你想向用户展示它,可能会有一个带有(J)TextArea的对话框更好。