2013-06-07 22 views
7

Eclipse cung cấp cho tôi một cảnh báo về tuyên bố "thoát". Đây có phải là dương tính giả không?Đây có phải là rò rỉ tài nguyên hoặc dương tính giả không?

Random r = new Random(); 
try(PrintWriter out1 = new PrintWriter("one.txt"); 
    PrintWriter out2 = new PrintWriter("two.txt")) 
{ 
    PrintWriter out = r.nextBoolean()?out1:out2; 
    out.println("x"); 
} 

P.S .: Các cảnh báo là "Resource rò rỉ: 'ra' không bao giờ đóng".

+1

Cảnh báo là gì? –

+0

Không nên đóng sau khi sử dụng. –

+2

Dường như ** dương tính giả **. BTW 'Idea' không đưa ra bất kỳ cảnh báo nào trên dòng đó. – Andremoniy

Trả lời

1

Nó chắc chắn là dương tính giả, out đang được giao out1 hoặc out2 đang được tự động đóng lại. Ngoài ra, không thể nhìn thấy bên ngoài khối thử.

+3

"không hiển thị" bên ngoài khối thử là chính xác những gì đang gây ra Eclipse để đánh giá rằng một tiềm năng rò rỉ tài nguyên là ở bàn tay. I E. trong phạm vi của biến 'out', nó không bao giờ bị đóng ... –

5

Đó là một kết quả dương tính giả. Tất cả các phiên bản được đóng một cách chính xác.

Tôi đã tắt các cảnh báo liên quan đến tài nguyên đó trong Eclipse từ lâu. Chúng thực sự không đáng tin cậy vì có rất nhiều đường dẫn điều khiển chính xác "rõ ràng" không thể được Eclipse xác định là "đúng" mà không thực sự thực thi chúng ... Bất kỳ mã không tầm thường nào đều sẽ phải chịu những sai lầm tích cực.

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