Co říkáte na try-with-resources statement v JDK 7

ondra.novacisko.cz

Co říkáte na try-with-resources statement v JDK 7
« kdy: 12. 11. 2010, 08:51:04 »
Já vím, že o tom bude na rootu ještě článek, přesto bych se už teď chtěl zeptat místních případných Javistů, co říkají nove feature. Já se na to dívám jako céčkař, přesnějí C++čkař, kde funguje automatické volání destruktorů na konci scope.

Z mého pohledu mi to příjde jako látání obrovského problému Javy.  Jeden čas jsem něco podobného řešil zde: http://bredy.novacisko.cz/?Jak-na-destruktory-v-Jave/193  Jukněte mimochodem na datum článku (rok 2007).

Co si ale myslí odkojený javista?

Připomínám, že nová featura je možnost do příkazu try uvést deklarace objektů, které se na konci bloku uzavřou:

Kód: [Vybrat]
try (InputStream fis = new FileInputStream(source);
        OutputStream fos = new FileOutputStream(target)){
 
        byte[] buf = new byte[8192];
 
        int i;
        while ((i = fis.read(buf)) != -1) {
            fos.write(buf, 0, i);
        }
    }
    catch (Exception e) {
        e.printStackTrace();
    }



I

Re: Co říkáte na try-with-resources statement v JDK 7
« Odpověď #1 kdy: 12. 11. 2010, 12:54:03 »
Jako DB admin to jedine vitam. Programatori v JAVE jsou to nejhorsi co muze spravce DB potkat. Vetsina z nic(hlavne ti z Asie) si mysli ze GC za ne nevyresi dealokaci vsech prostredku(ne jen pameti). S tim ze, program v Jave po sobe nazavira kurzory a konexe s tim se setkavam az prilis casto(behem testovani se na to neprijde), jestli se tohle jednou dostane do praxe tak mi ubyde dost prace.

volca

Re: Co říkáte na try-with-resources statement v JDK 7
« Odpověď #2 kdy: 12. 11. 2010, 13:02:45 »
Pokud ovsem nebudou programatori zapominat tuhle konstrukci pouzit - jiny projev stejeho problemu.Nechapu proc je takovy problem do javy dodelat konstrukci co by dovolila radne RAII - snad jenom ze uzavirani daneho resource muze hazet vyjimku.

ondra.novacisko.cz

Re: Co říkáte na try-with-resources statement v JDK 7
« Odpověď #3 kdy: 12. 11. 2010, 13:50:46 »
Pokud ovsem nebudou programatori zapominat tuhle konstrukci pouzit - jiny projev stejeho problemu.Nechapu proc je takovy problem do javy dodelat konstrukci co by dovolila radne RAII - snad jenom ze uzavirani daneho resource muze hazet vyjimku.

Stejně jako v C++. Výjimka nezpůsobí zastavení uzavírání resourců, pouze se zaznamená a pak vyletí na konci té zavírací sekvence. Přitom se prostředek považuje za uzavřený i přesto, že skončil s výjimkou. Jak řešit double-exception, to si netroufnu navrhovat, v C++ to končí na terminate :-)

Marek

Re: Co říkáte na try-with-resources statement v JDK 7
« Odpověď #4 kdy: 12. 11. 2010, 14:09:02 »
To je to podobné jako C# using(){}?