Khi cần đóng luồng đầu ra, chúng tôi có hai lựa chọn.Tôi có nên sử dụng phương thức close hoặc closeQuietly để đóng luồng đầu ra không?
closeQuietly có nghĩa là đóng luồng không có ngoại lệ.
try { close(out) } catch(IOException e) { }
gần
try { close(out) } catch(IOException e) { throw anException; }
như được biết, dòng sản lượng sẽ viết một/một vài ký tự vào cuối tập tin khi đóng cửa, nếu các văn bản sai, tập tin cũng có thể không được mở chính xác như ZipoutputStream.
nếu tôi sử dụng thẻ đầu tiên, tôi sẽ gặp phải một số nguy cơ không đóng được. nếu tôi sử dụng thẻ thứ hai, nó sẽ cho phép mã của tôi không thân thiện.
Ai đó có thể cho tôi một số lời khuyên không?
Rất tiếc vì đã mô tả sự cố không rõ ràng.
Tôi có nghĩa là cách thực hiện thao tác IO một cách an toàn. nếu bản phát hành của tài nguyên bị lỗi, nó sẽ cho phép người gọi biết.
Cảm ơn tất cả câu trả lời của bạn. Và đặc biệt cảm ơn @Don Roby đã cho tôi một liên kết, trong đó có câu trả lời tốt nhất trả lời bằng cách @Fabian Barney
bản sao có thể có của [Có an toàn để sử dụng Apache commons-io IOUtils.closeQuietly?] (Http://stackoverflow.com/questions/14436453/is-it-safe-to-use-apache-commons-io- ioutils-closequietly) –
'catch (IOException e) {ném một ngoại lệ; } 'là vô nghĩa - bạn cần khai báo' ném IOException' để làm điều đó, vì vậy bạn cũng có thể bỏ qua try/catch – artbristol