2008-11-07 36 views
63

Khi nào thì java bỏ một kết nối tới một URL? Tôi không thấy phương thức close() trên URL hoặc URLConnection để nó giải phóng kết nối ngay sau khi yêu cầu kết thúc? Tôi chủ yếu yêu cầu xem liệu tôi có cần làm bất kỳ việc dọn dẹp nào trong một trình xử lý ngoại lệ hay không.Trong Java khi nào kết nối URL đóng?

try { 
    URL url = new URL("http://foo.bar"); 
    URLConnection conn = url.openConnection(); 
    // use the connection 
} 
catch (Exception e) { 
    // any clean up here? 
} 
+8

Không bao giờ sử dụng bắt (Ngoại lệ), nếu một ngoại lệ cụ thể được ném, hãy bắt từng trường hợp theo mệnh đề riêng của mình – OscarRyz

+3

hoặc ít nhất bắt Ngoại lệ cuối cùng (trong trường hợp không có trường hợp ngoại lệ nào bắt được ngoại lệ). – jeremy

Trả lời

41

Tùy thuộc vào giao thức cụ thể được chỉ định trong giao thức. Một số duy trì kết nối liên tục, đóng các kết nối khác khi cuộc gọi của bạn đóng trong đầu vào hoặc đầu ra do kết nối đưa ra. Nhưng ngoài việc nhớ đóng các luồng bạn đã mở từ URLConnection, bạn không thể làm gì khác.

Từ javadoc cho java.net.URLConnection

Gọi close() phương pháp trên InputStream hay OutputStream của một URLConnection sau một yêu cầu có thể giải phóng tài nguyên mạng gắn liền với trường hợp này, trừ khi cụ thể giao thức thông số kỹ thuật chỉ định khác nhau hành vi cho nó.

+2

Điều này trả lời tốt nhưng không bao gồm trường hợp danh nghĩa của HttpUrlConnection. – Snicolas

39

Nếu bạn truyền tới một HttpURLConnection, có phương thức disconnect(). Nếu kết nối không hoạt động, có thể ngắt kết nối ngay lập tức. Không đảm bảo.

Các vấn đề liên quan