首页 > 解决方案 > 获取 java.net.ConnectException 但是当我实现 catch 块时,IDE 告诉永远不要从 try 块中抛出 ConnectException

问题描述

这是我的代码

public ResponseEntity<String> xxxMethod(Notification notification, String communicationAPI) throws
        CustomException {
    ResponseEntity<String> responseEntity = null;
    try {
        HttpHeaders httpHeaders = new HttpHeaders();
        httpHeaders.add(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE);
        HttpEntity httpEntity = new HttpEntity(notification, httpHeaders);
        RestTemplate restTemplate = HTTPClientUtil.getRestTemplate();
        responseEntity = restTemplate.postForEntity(communicationAPI, httpEntity, String.class);
    } catch (KeyStoreException | NoSuchAlgorithmException | KeyManagementException e) {
        throw new CustomException(ErrorType.ERR_COMM_SERVICE);
    }
    return responseEntity;
}

下线

responseEntity = restTemplate.postForEntity(communicationAPI, httpEntity, String.class);

得到以下异常

java.net.ConnectException: Connection refused: connect
                at java.net.DualStackPlainSocketImpl.connect0(Native Method) ~[na:1.8.0_161]
                at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79) ~[na:1.8.0_161]
                at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) ~[na:1.8.0_161]
org.springframework.http.client.AbstractClientHttpRequest.execute(AbstractClientHttpRequest.java:53) ~[spring-web-5.1.8.RELEASE.jar:5.1.8.RELEASE]
                at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:735) ~[spring-web-5.1.8.RELEASE.jar:5.1.8.RELEASE]
                at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:670) ~[spring-web-5.1.8.RELEASE.jar:5.1.8.RELEASE]
                at org.springframework.web.client.RestTemplate.postForEntity(RestTemplate.java:445) ~[spring-web-5.1.8.RELEASE.jar:5.1.8.RELEASE]
                at com.development.co.management.client.RestBridge.xxxMethod(RestBridge.java:60) ~[classes/:na]
                at com.development.co.management.client.RestBridge$$FastClassBySpringCGLIB$$9335ad64.invoke(<generated>) ~[classes/:na]
                at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) ~[spring-core-5.1.8.RELEASE.jar:5.1.8.RELEASE]
                at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:749) ~[spring-aop-5.1.8.RELEASE.jar:5.1.8.RELEASE]
                at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) ~[spring-aop-5.1.8.RELEASE.jar:5.1.8.RELEASE]

                at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:93)
                at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)

        com.development.co.management.controller.TroubleTicketController.createTicket(TroubleTicketController.java:68)
                at com.development.co.management.controller.TroubleTicketController$$FastClassBySpringCGLIB$$5e1efd29.invoke(<generated>)
                at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
                at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:749)
                at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
                at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:88)
                at com.development.co.commons.aop.logging.LoginAspect.log(LoginAspect.java:104)
                at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method
                at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
                at java.lang.Thread.run(Thread.java:748)
            Caused by: java.net.ConnectException: Connection refused: connect
                at java.net.DualStackPlainSocketImpl.connect0(Native Method)

但是当我在 catch 中处理异常时,它表明这永远不会抛出 ConnectException。有人可以帮忙吗

标签: javaexception

解决方案


推荐阅读