Hầu hết thời gian, điều duy nhất tôi nhìn thấy một khối finally dùng để làm một cái gì đó giống nhưTại sao tôi cần sử dụng cuối cùng để đóng tài nguyên?
FileInputStream f;
try{
f= new FileInputStream("sample.txt");
//something that uses f and sometimes throws an exception
}
catch(IOException ex){
/* Handle it somehow */
}
finally{
f.close();
}
Câu hỏi của tôi là, nếu phạm vi f kết thúc bằng khối kèm theo, tại sao chúng ta cần phải đóng nó vào cuối cùng ?
Trong trường hợp của bạn, phạm vi 'f' không kết thúc với khối try –
@Oli Charlesworth: Đây rõ ràng là một ví dụ có thể đọc được. –
Tạo tham chiếu tệp không ném ngoại lệ (hoặc tạo một xử lý tệp), để tham khảo trong tương lai. –