首页 文章

为什么程序仍然抛出java.net.ConnectException甚至我添加了try..catch?

提问于
浏览
0

我正在尝试在出现连接错误时添加控件 . 我的目标是通过捕获它来阻止程序抛出异常 .

try {
    Client client = ClientBuilder.newBuilder()
        .register(JacksonFeature.class)
        .build();
        client.register(new HttpBasicAuthFilter("login", "password"));
        WebTarget webTarget = client.target("http://path");
        Response response = webTarget.request().post(Entity.json(bean));
        System.out.println(response.getStatus());

} catch (Exception e) {
        // I do nothing here
}

但它在控制台中打印:

org.glassfish.jersey.client.ClientRequest writeEntity Grave:提交请求输出流时出错 . java.net.ConnectException:连接被拒绝:在java.net.DualStackPlainSocketImpl.smplConnect(DualStackPlainSocketImpl.java:79)的java.net.AualStackPlainSocketImpl.mpl上连接java.net.AualStackPlainSocketImpl.connect(java).AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java: 339)java.net的java.net.AbstractPocketImpl.connect(AbstractPlainSocketImpl.java:182)java.net上的Java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:182)中的java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172) . 在sun.net.www.http的sun.net.NetworkClient.doConnect(NetworkClient.java:175)的java.net.Socket.connect(Socket.java:579)上的net.SocksSocketImpl.connect(SocksSocketImpl.java:392) .httpClient.openServer(HttpClient.java:432)at sun.net.www.http.HttpClient.openServer(HttpClient.java:527)at sun.net.www.http.HttpClient . (HttpClient.java:211)at sun .net.www.http.HttpClient.New(HttpClient.java:308)at sun.net.www.http.HttpClient.New(HttpClient.java:326)at sun.net.www.protocol.http.HttpURL位于sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:932)的sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:)中的Connection.getNewHttpClient(HttpURLConnection.java:996): 850)在org.glassfish.jersey的org.glassfish.jersey.client.HttpUrlConnector $ 3.getOutputStream(HttpUrlConnector.java:287)的sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1091) . message.internal.CommittingOutputStream.commitStream(CommittingOutputStream.java:198)org.glassfish.jersey.message.internal.CommittingOutputStream.commitStream(CommittingOutputStream.java:192)org.glassfish.jersey.message.internal.CommittingOutputStream.commit(在org.glassfish.jersey.message.internal.OutboundMessageContext.com上的org.glassfish.jersey.client.ClientRequest.writeEntity(ClientRequest.java:451)中的org.glassfish.jersey.message.internal.OutboundMessageContext.com_Stream(OutboundMessageContext.java:822)中的CommittingOutputStream.java:260) .jersey.client.HttpUrlConnector._apply(HttpUrlConnector.j ava:290)org.glassfish.jersey.client.HttpUrlConnector.apply(HttpUrlConnector.java:203)org.glassfish.jersey.client.ClientRuntime.invoke(ClientRuntime.java:215)atg.glassfish.jersey.client泽西邀请$ 1.call(JerseyInvocation.java:634)org.glassfish.jersey.client.JerseyInvocation $ 1.call(JerseyInvocation.java:631)org.glassfish.jersey.internal.Errors.process(Errors.java:315 )org.glassfish.jersey.internal.Errors.process(Errors.java:297)org.glassfish.jersey.internal.Errors.process(Errors.java:228)org.glassfish.jersey.process.internal . RequestScope.runInScope(RequestScope.java:426)org.glassfish.jersey.client.JerseyInvocation.invoke(JerseyInvocation.java:631)org.glassfish.jersey.client.JerseyInvocation $ Builder.method(JerseyInvocation.java:391)在com.saintgo的com.saintgobain.sg4p.igquality.desktop.DesktopClientController.sendToServer(DesktopClientController.java:857)的org.glassfish.jersey.client.JerseyInvocation $ Builder.post(JerseyInvocation.java:300) bain.sg4p.igquality.desktop.DesktopClientController.handleSendToServerClicked(DesktopClientController.java:835)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)at sun.reflect . 在sun.reflect.GeneratedMethodAccessor1的sun.reflect.misc.Trampoline.invoke(MethodUtil.java:75)的java.lang.reflect.Method.invoke(Method.java:606)中委托MethodAethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) .invoke(未知来源)

如果我添加了catch部分: e.printStackTrace();

控制台还打印:

引起:java.net.ConnectException:连接被拒绝:在java.net.DualStackPlainSocketImpl.smplConnect(DualStackPlainSocketImpl.java:79)的java.net.AualStackPlainSocketImpl.mplConnect(在java.net.AbstractPocketImpl.java上接受java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)的java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)中的AbstractPlainSocketImpl.java:339(PlainSocketImpl.java:172) )at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)at java.net.Socket.connect(Socket.java:579)at sun.net.NetworkClient.doConnect(NetworkClient.java:175)at sun.net .http.HttpClient.openServer(HttpClient.java:432)at sun.net.www.http.HttpClient.openServer(httpClient.java:527)at sun.net.www.http.HttpClient . (HttpClient.java: 211)at sun.net.www.http.HttpClient.New(HttpClient.java:308)at sun.net.www.http.HttpClient.New(HttpClient.java:326)atsun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:996)at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:932)at sun.net.www.protocol . 位于org.glassfish.jersey.client.HttpUrlConnector $ 3.getOutputStream(HttpUrlConnector.java)的sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1091)上的http.HttpURLConnection.connect(HttpURLConnection.java:850) :287)org.glassfish.jersey.message.internal.CommittingOutputStream.commitStream(CommittingOutputStream.java:198)在org.glassfish的org.glassfish.jersey.message.internal.CommittingOutputStream.commitStream(CommittingOutputStream.java:192) . jg.message.internal.CommittingOutputStream.write(CommittingOutputStream.java:226)org.codehaus.jackson.impl.Utf8Generator._flushBuffer(Utf8Generator.java:1754)org.codehaus.jackson.impl.Utf8Generator.flush(Utf8Generator . java:1088)at org.codehaus.jackson.map.ObjectMapper.writeValue(ObjectMapper.java:1615)a t org.codehaus.jackson.jaxrs.JacksonJsonProvider.writeTo(JacksonJsonProvider.java:559)org.glassfish.jersey.message.internal.WriterInterceptorExecutor $ TerminalWriterInterceptor.aroundWriteTo(WriterInterceptorExecutor.java:194)org.glassfish.jersey.message .internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:139)org.glassfish.jersey.message.internal.MessageBodyFactory.writeTo(MessageBodyFactory.java:1005)org.glassfish.jersey.client.ClientRequest.writeEntity(ClientRequest.java) :430)org.glassfish.jersey.client.HttpUrlConnector._apply(HttpUrlConnector.java:290)at org.glassfish.jersey.client.HttpUrlConnector.apply(HttpUrlConnector.java:203)... 78更多

对不起,如果我打印太多堆栈跟踪...

我想知道如果我不打印堆栈跟踪,我怎么能让异常消失?谢谢 :)

1 回答

  • 4

    看起来您的异常由框架记录并抛出到您的客户端代码 . 可能要么无法抑制它,要么(如果通过日志记录API记录),您可以使用适当的日志记录级别配置来控制它 .

相关问题