Java检测连接错误

时间:2017-03-31 06:01:21

标签: java

我有一些 Java 代码,它从 URL 中读取 gzip 文件并解压缩。如何确保从连接中读取整个文件或如何确保它没有问题?

try {
    URL url = new URL("http://example.com/de?Debug=1");
    URLConnection myUrlConnection = url.openConnection();
    GZIPInputStream gZIPInputStream = new GZIPInputStream(myUrlConnection.getInputStream());
    StringBuffer decompressedStringBuffer = new StringBuffer();
    int bytes_read;
    while ((bytes_read = gZIPInputStream.read(buffer)) > 0) {
        String part = new String(buffer, 0 ,bytes_read, "UTF-8");
            decompressedStringBuffer.append(part);
        }
        gZIPInputStream.close();
        String decompressedString = decompressedStringBuffer.toString();

        ...

} catch (MalformedURLException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
}

try-catch块由 IntelliJ 自动生成。我应该注意哪些其他类型的例外:connection breakpartial data receivedconnection timeout。这些都是我能想到的问题。你能想到其他人吗?

1 个答案:

答案 0 :(得分:3)

如果到达IOExceptions返回-1的点,则表示已发送整个文件。

但是不要在内存中收集它:每次获得一块时都要用它做一些有用的东西:即发送它,或者把它写到文件中,或者其他什么。

您不需要再捕获任何异常,任何{{1}}都表示有这种或那种类型的麻烦。