0

我正在开发一个也使用 REST-API 的 Swing 应用程序。我正在使用泽西岛来实现这一点。

我希望用户在 TextField 中输入一个 URL,如果 URL 格式不正确或有什么问题,我想给他一些反馈。我使用 URI 作为存储 URL 的基础,并且能够捕获由此出现的任何问题并为用户提供一些信息。

 } catch (URISyntaxException ex) {
        MainClass.write2Log("URL wrong : '" + baseURL + "'");
        }

现在,当 URL 具有正确的格式但根本无法解析时,我会收到以下异常:

Exception in thread "AWT-EventQueue-0" javax.ws.rs.ProcessingException:
java.net.UnknownHostException: sx.dddsds.ded
at org.glassfish.jersey.client.HttpUrlConnector.
apply(HttpUrlConnector.java:205)

所以我的问题是:当我没有引发此异常的对象时,如何“捕获”此异常?

提前致谢 !

4

2 回答 2

2

异常在它们被抛出的线程上沿调用堆栈向上传播;他们不交叉线程。如果要捕获异常,则需要try-catch在堆栈跟踪中的某个位置放置您未在问题中发布的块。

查看您发布的行,看起来您正在尝试在事件线程上执行长时间运行的操作(HTTP 请求);它应该在其他地方运行。

于 2013-09-23T10:22:58.617 回答
2

您可以为特定(例如当前或任何其他 Thread 实例)线程或全局设置它以用于所有未捕获的异常:

Thread.setDefaultUncaughtExceptionHandler( ... );
Thread.currentThread().setUncaughtExceptionHandler( ...);

通过 Thread 启动一个新线程,您可以设置异常处理程序,如果您使用 executor 启动新线程,您可以设置您的自定义线程工厂,这将设置异常处理程序。

于 2013-09-26T12:13:21.517 回答