Java - ošetrenie výnimiek pri mazaní súboru

Programovacie jazyky, rady, poradňa...
pitbullko
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 294
Registrovaný: 13 nov 2009, 8:19
Bydlisko: „Keby som bol postavený pred rozhodnutie medzi zbabelosťou a násilím, zvolil by som násilie“[Gandhi]

Java - ošetrenie výnimiek pri mazaní súboru

Príspevok od používateľa pitbullko »

Ahojte,
mohol by sa prosím niekto pozrieť na môj kód. Potreboval by som v cykle zmazať súbory, ktorých mená mám uložené v poli stringov. Ide mi o ošetrenie výnimiek, či je to spravené správne a ak nie tak ako by to malo byť.
Díky

Kód: Vybrať všetko

        for(int i=0; i<subory.length; i++){
            File subor = new File("\\\\filesrv\\"+cesta+"\\"+subory[i]+".txt");
            
            try{
                if(subor.exists()){
                    try{
                        subor.delete();                                                
                    }catch(SecurityException ex){
                        error = true;                        
                    }
                }else
                    error = true;
            }catch(SecurityException ex){
                error = true;
            }
            
            if(error)
                i = subory.length;
            subor = null;
        }
harrison314
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 8224
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Java - ošetrenie výnimiek pri mazaní súboru

Príspevok od používateľa harrison314 »

Cele zle :lol: .
Este horsie ako tvoje riesenie clone.
Cesty k suborom sa nespajaju spajanim stringov !

Kód: Vybrať všetko

error = true;
toto ma byt vtip ?
Okrem toho topis vynimky, to sa nesmie.
Celkom nechapem co si myslel tym kodom tak tazko povedat.
pitbullko
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 294
Registrovaný: 13 nov 2009, 8:19
Bydlisko: „Keby som bol postavený pred rozhodnutie medzi zbabelosťou a násilím, zvolil by som násilie“[Gandhi]

Re: Java - ošetrenie výnimiek pri mazaní súboru

Príspevok od používateľa pitbullko »

To error má indikovať ďalej v kóde, že nastala pri mazaní súborov chyba.
A ako sa majú zadávať cesty k súborom?
Mám súbory, ktoré majú byť zmazané a podľa toho, či sa ich podarí zmazať by sa mal odvíjať zvyšok kódu. A na to, či sa ich podarilo zmazať by mala slúžiť tá premenná error.
Mohol by si mi teda ukázať prosím ťa ako by to malo byť správne?
javatar
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 6112
Registrovaný: 12 aug 2010, 14:49
Bydlisko: I don't exist at all.

Re: Java - ošetrenie výnimiek pri mazaní súboru

Príspevok od používateľa javatar »

no samotne delete ti hadze false ak sa nepodarilo vymazat - nie som si isty ci vobec niekedy tu vynimku hodi...

no a vynimky sa topit mozu... ale iba vo vybranych situaciach...

osobne by som to asi hodil do jednej metody ktora ti vrati ci sa vsetko podarilo zmazat alebo nie - a uz si sam vyber ci hodi exception ak nie alebo hlasku osetris inak...
pitbullko
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 294
Registrovaný: 13 nov 2009, 8:19
Bydlisko: „Keby som bol postavený pred rozhodnutie medzi zbabelosťou a násilím, zvolil by som násilie“[Gandhi]

Re: Java - ošetrenie výnimiek pri mazaní súboru

Príspevok od používateľa pitbullko »

Snažil som sa to nejak opraviť. Spravil som dve verzie také, že si myslím, že by to asi malo byť správne.
V tej prvej by som mal vedieť podľa návratovej hodnoty, či všetky súbory boli vymazané.
A v druhej to zistím pomocou try-catch v tej metóde v rámci ktorej bude volaná metóda deleFiles().
Mohli by ste na to ešte prosím pozrieť.

Prvá verzia:

Kód: Vybrať všetko

    public boolean deleteFiles(String []subory){

        boolean ind = false;
        for(int i=0; i<subory.length; i++){
            File subor = new File("\\\\filesrv\\"+cesta+"\\"+subory[i]+".txt");

            try{
                if(subor.exists())
                    subor.delete();
                else{
                    //subor neexistuje
                    ind = true;
                    i = subory.length;
                }
            }catch(SecurityException e){
                ind = true;
                i = subory.length;
            }
            subor = null;
        }
        return ind;
    }
Druhá verzia:

Kód: Vybrať všetko

    public void deleteFiles(String []subory) throws FileNotFoundException, SecurityException{
        for(int i=0; i<subory.length; i++){
            File subor = new File("\\\\filesrv\\"+cesta+"\\"+subory[i]+".txt");
                if(subor.exists())
                    subor.delete();
                else
                    throw new FileNotFoundException();
            subor = null;
        }
    }
javatar
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 6112
Registrovaný: 12 aug 2010, 14:49
Bydlisko: I don't exist at all.

Re: Java - ošetrenie výnimiek pri mazaní súboru

Príspevok od používateľa javatar »

vo fore neosetrujes ci dany subor existuje alebo nie... proste v nom zavolas if(!subor.delete()) throw new ExceptionTypeAccordingToWish();
Napísať odpoveď