Java HttpURLConnection帮助我避免了NullPointerException

Java HttpURLConnection帮助我避免了NullPointerException,java,Java,我今天在使用HttpURLConnection时遇到了这个非常奇怪的事情。下面的代码基本上是从URL读取数据,并将数据(使用GSON将其解析为java对象后)存储到java对象中。数据还同时存储在我序列化并保存到文件中的另一个对象中。如果无法访问我的URL,我将从文件中读取数据。URL是一个安全的URL,我只能通过VPN访问。所以为了测试我的程序,我断开了VPN的连接,看看我是否能够从文件中读取数据。下面的第一个代码向我抛出了一个空指针,而第二个没有。您可以看到的唯一区别是,在第二个示例中,我使

我今天在使用HttpURLConnection时遇到了这个非常奇怪的事情。下面的代码基本上是从URL读取数据,并将数据(使用GSON将其解析为java对象后)存储到java对象中。数据还同时存储在我序列化并保存到文件中的另一个对象中。如果无法访问我的URL,我将从文件中读取数据。URL是一个安全的URL,我只能通过VPN访问。所以为了测试我的程序,我断开了VPN的连接,看看我是否能够从文件中读取数据。下面的第一个代码向我抛出了一个空指针,而第二个没有。您可以看到的唯一区别是,在第二个示例中,我使用了HttpURLConnection。使用它有什么帮助?有人遇到过类似的事情,还是我忽略了什么

无法访问URL时抛出空指针的代码-

public static void getInfoFromURL() throws IOException {
    Gson gson = null;
    URL url = null;
    BufferedReader bufferedReader = null;
    String inputLine = "";
    try {
        gson = new Gson();
        url = new URL(addressURL);
        bufferedReader = new BufferedReader(new InputStreamReader(url.openStream()));
        while ((inputLine = bufferedReader.readLine()) != null) {
            addressData = ((AddressData) gson.fromJson(inputLine,AddressData.class));               
        }                   

    } catch (MalformedURLException mue) {
        logger.error("Malformed URL exception " + mue+ " occured while accessing the URL ");
    } catch (IOException ioe) {
        logger.error("IO exception " + ioe+ " occured while accessing the URL ");
    } finally {
        if (bufferedReader != null)
            bufferedReader.close();
    }
}
工作正常的代码

public static void getInfoFromURL() throws IOException {
    Gson gson = null;
    URL url = null;
    BufferedReader bufferedReader = null;
    HttpURLConnection connection =null;
    String inputLine = "";
    try {
        gson = new Gson();
        url = new URL(addressURL);          
                connection = (HttpURLConnection) url.openConnection(); //This seems to be helping
        connection.connect();
        bufferedReader = new BufferedReader(new InputStreamReader(url.openStream()));
        while ((inputLine = bufferedReader.readLine()) != null) {
            addressData = ((AddressData) gson.fromJson(inputLine,AddressData.class));               
        }                   

    } catch (MalformedURLException mue) {
        logger.error("Malformed URL exception " + mue+ " occured while accessing the URL ");
    } catch (IOException ioe) {
        logger.error("IO exception " + ioe+ " occured while accessing the URL ");
    } finally {
        if (bufferedReader != null)
            bufferedReader.close();
    }
}

如果“抛出空指针”,你能将stacktrace附加到你的问题上吗?我尝试在我的电脑上运行你的代码,但没有失败。它正确地抛出一个被catch块捕获的
ConnectException
。我使用的是OpenJDK 1.7.025,64位,Linux。您正在使用哪个JVM?不,它在com.global.usa.test.myapp.util.test.getInfoFromURL(test.java:54)的线程“main”java.lang.NullPointerException中抛出一个nullpointer异常-异常。第54行是调用此方法的代码中的行号。当你说你没有得到错误时,你是如何试图重现它的?在我的情况下,我必须确保URL是不可访问的,所以我必须离开我的vpn。只是想知道你做了什么来复制它?对于一个简单的URL,它应该没有什么区别。当你说“54是代码中的行号”时,它是代码中的哪一行?为什么你还没有发布堆栈跟踪?这是秘密吗?