我正在开发一个也使用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)
所以我的问题是这样的:当我没有抛出此异常的Object时,如何“捕获”此异常?
提前致谢!
答案 0 :(得分:2)
异常在调用它们被引入的线程上向上移动;他们不穿越线程。如果您想捕获异常,则需要在堆栈跟踪中的某个位置使用try-catch
块,而不是在您的问题中发布。
查看您发布的行,看起来您正在尝试在事件线程上执行长时间运行的操作(HTTP请求);它应该在其他地方运行。
答案 1 :(得分:2)
您可以为特定的(例如当前或任何其他Thread实例)线程设置它,或者为所有未捕获的异常设置全局:
Thread.setDefaultUncaughtExceptionHandler( ... );
Thread.currentThread().setUncaughtExceptionHandler( ...);
通过Thread启动一个新线程,您可以设置异常处理程序,如果您使用executor启动新线程,则可以设置自定义线程工厂,这将设置异常处理程序。