Vyjímky - seznam s chybami – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Vyjímky - seznam s chybami – Java – Fórum – Programujte.comVyjímky - seznam s chybami – Java – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
linarts
~ Anonymní uživatel
13 příspěvků
11. 5. 2013   #1
-
0
-

Zdravím,

potřebuji poradit, jak zapsat vyjímku v metodě do seznamu. Můj program zatím vypadá takto:

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.List;

public class CaesarCypher extends Cypher {
    private String fileName;

    protected String readFileContent(String sourceFileName) {
        String fileName = "vstup.txt";
        BufferedReader in = null;
        StringBuilder content = new StringBuilder();
        String line, text;
        try {
            in = new BufferedReader(new FileReader(fileName));
            while((line = in.readLine()) != null) {
                content.append(line);
                content.append("\n");
            }
        } catch (FileNotFoundException ex) {
            System.out.println("File with name " + fileName + " was not found: " + ex.toString());
        } catch (IOException ex) {
            System.out.println("Failed to read file " + fileName + " :" + ex.toString());
        } finally {
            if (in != null) {
                try {
                    in.close();
                } catch (IOException ex) {
                    System.out.println("Failed to close file " + fileName + " :" + ex.toString());
                }
            }
           
        }
        text = content.toString();
        return text;
    }

    protected String crypt(String content, int key) {
        StringBuilder cryptedText = new StringBuilder(); 
        for (int i = 0; i < content.length()-1; i++) { 
            cryptedText.append((char)(content.charAt(i) + 2)); 
        } 
        return cryptedText.toString(); 
    }
}

A já mám každou chybu, která v metodě vznikne zapsat do seznamu (List<String>) chyb. Tento seznam chyb lze pak zjistit voláním metody getAllErrors().

Díky za pomoc.

Nahlásit jako SPAM
IP: 93.187.106.–
Reklama
Reklama
ingiraxo+15
Grafoman
11. 5. 2013   #2
-
0
-

tak v každým try-catch máš typ vyjímky, která se má zachytit např: catch (FileNotFoundException ex), tak tu proměnnou ex přidáš do seznamu (seznam bude typu Exception)

instanci třídy Seznam jen přidáš jako kompozici do tý třídy, ve který chceš zachytávat a přidávat vyjímky

Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
linarts
~ Anonymní uživatel
13 příspěvků
11. 5. 2013   #3
-
0
-

#2 ingiraxo
Takže v každé metodě mám do toho úseku try-catch vytvořit seznam s chybami ano? Jinak ten seznam má být typu String.

Nahlásit jako SPAM
IP: 93.187.106.–
ingiraxo+15
Grafoman
11. 5. 2013   #4
-
0
-

#3 linarts
ne, instanci seznamu vytvoříš jen jednu ve třídě Cypher (jako protected) a potom jen při vyvolání vyjímky přidáš chybu do seznamu (ten string si získej z Exception přes getMessage())

Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
linarts
~ Anonymní uživatel
13 příspěvků
11. 5. 2013   #5
-
0
-

#4 ingiraxo
Teda, to je na mě už trošku složitější. S vyjímkami zatím zkušenost nemám, takže v tom mám trošku zmatek.

Nahlásit jako SPAM
IP: 93.187.106.–
ingiraxo+15
Grafoman
11. 5. 2013   #6
-
0
-

#5 linarts
tak lehkej pseudo kód by vypadat nějak takto, tak si to zkus převíst do tvoji app

class Seznam {
    private List<string> seznam;

    // funkce pro seznam
}

class BaseClass {
    protected Seznam seznam;

    public List<string> getSeznam() {
        return seznam;
    }
}

class MyClass extends BaseClass {
    void metoda() {
        try {
            // neco...
        } catch (Exception ex) {
            seznam.add(ex.getMessage());
        }
    }
}

nemám to funkční, šlo mi jen o ten princip :)

Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
linarts
~ Anonymní uživatel
13 příspěvků
11. 5. 2013   #7
-
0
-

#6 ingiraxo
Jo, dobře, to by teoreticky šlo :))

A ještě se zeptám, načítám data ze souboru, ty zašifruju a mám udělat metodu, která vytvoří soubor (ve vyjímce otestuje jestli neexistuje, pokud ano, tak vrátí chybu) a následně zapíšu ten zašifrovaný text do toho nově vytvořeného souboru.

Mám něco takového:

protected void writeContentToFile(String targetFileName, String content) {
        BufferedReader in = null;
        StringBuilder cont = new StringBuilder();
        String line, text;
        try{
            in = new BufferedReader(new FileReader(targetFileName));
            while((line = in.readLine()) != null) {
                content.append(line);
                content.append("\n");
            }
        } catch (IOException ex) { 
            System.out.println("Error while reading file " + fileName + ": " + ex.toString()); 
        }
    }

Problém tady je, že nevím, jak vytvořit ten nový soubor a potom ještě mi to podtrhuje append.

Nahlásit jako SPAM
IP: 93.187.106.–
ingiraxo+15
Grafoman
11. 5. 2013   #8
-
0
-

#7 linarts
pro to vytvoření souboru můžeš použít něco takovýho 



File f = new File("soubor.txt");

if (!f.exists()) {
    f.createNewFile();
}

FileWriter fw = new FileWriter(f);
fw.write(...);
fw.close();
Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
linarts
~ Anonymní uživatel
13 příspěvků
11. 5. 2013   #9
-
0
-

#8 ingiraxo
Tak jo, snad to nějak vykutím, díky moc :)

Nahlásit jako SPAM
IP: 93.187.106.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 59 hostů

Podobná vlákna

Výjimky a vlákna — založil Houp

String, vyjímky a rokenrol — založil Zzzajda

Výjimky a DLL, nerozumím — založil Aigor

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý