2013-06-07 17 views
7

Eclipse bana "out" bildirimi hakkında bir uyarı veriyor. Bu yanlış bir pozitif mi?Bu bir kaynak sızıntısı mı, yoksa yanlış pozitif mi?

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. .: uyarı "Kaynak sızıntısı: 'dışarı' kapalı hiçbir zaman" dır.

+1

Uyarı nedir? –

+0

Kullanımdan sonra kapalı olmamalıdır. –

+2

** Sahte pozitif ** gibi görünüyor. BTW 'Fikir 'bu hatta herhangi bir uyarı vermez. – Andremoniy

cevap

1

Kesinlikle yanlış pozitif, outout1 veya otomatik olarak kapatılıyor out2 atandığı olmasıdır. Ayrıca dışarıda try bloğu dışında görünmez.

+3

Deneme bloğu dışındaki "görünmezlik", Eclipse'nin olası bir kaynak sızıntısının bulunduğunu değerlendirmesine neden olan şeydir. Yani 'out' değişkeni kapsamında asla kapanmaz ... –

5

Bu yanlış bir pozitif. Tüm örnekler doğru şekilde kapatılmıştır.

Bu kaynakla ilgili uyarıları Eclipse'de uzun zaman önce kapattım. Eclipse tarafından gerçekte çalıştırılmadan "doğru" olarak tanımlanamayacak kadar çok "bariz" doğru kontrol akış yolu olduğu için gerçekten güvenilir değiller. Herhangi bir önemsiz kod, bu yanlış pozitiflere mahkum olacak.

İlgili konular