Pouze tento týden sleva až 80 % na e-learning týkající se Javy
Avatar
petr.chatar.anton:19.5.2015 10:46

Ahoj,
chci se Vás zeptat, zda jsem správně použil vyvolání vyjímky v následujícím kódu. Neměl bych to vyvolání a zachycení použít spíš v metodě ExistujeSoubor třídy Soubory a tady zrušit tu podmínku If?

string zpracovavanySoubor = "u:\\kopie\\personal\\dappvA.cop";
           Soubory soub = new Soubory(zpracovavanySoubor, "1338A");
           string zprava = "";
           try
           {
               if (!soub.ExistujeSoubor())
               {
                   zprava = "Neexistuje nebo není přístupný soubor " + zpracovavanySoubor;
                   throw new InvalidOperationException(zprava);
               }
           }
           catch (InvalidOperationException ex)
           {
               MessageBox.Show(ex.Message);
           }
 
Odpovědět
19.5.2015 10:46
Avatar
Odpovídá na petr.chatar.anton
Michal Štěpánek:19.5.2015 13:39

Vyjímky bys měl tvořit v třídě a ve formu je jen zobrazovat

Nahoru Odpovědět
19.5.2015 13:39
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Odpovídá na Michal Štěpánek
petr.chatar.anton:19.5.2015 14:09

No, to je jen konzolová aplikace, MessageBox tam používám jen k zobrazování zpráv. Ještě jsem zapomněl dodat, že tenhle kód je součástí metody Main ve třídě Program.
Šlo mi spíš o to, abych ukončil program, pokud mi soub.Existuje­Soubor() vrátí False a dal to uživateli nějak najevo. Ale podle Tvé odpovědi bych tu vyjímku asi měl vyvolat spíš už v metodě ExistujeSoubor() ve třídě Soubory.

 
Nahoru Odpovědět
19.5.2015 14:09
Avatar
Odpovídá na petr.chatar.anton
Michal Štěpánek:19.5.2015 14:11

Ano, vyjímky vyvolávat v metodě ve třídě a zpracovávat (zobrazovat) v uživatelském prostředí

Nahoru Odpovědět
19.5.2015 14:11
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Odpovídá na Michal Štěpánek
petr.chatar.anton:19.5.2015 14:18

A prosím Tě, jak pak způsobím v ošetření vyjímky, aby se program ukončil? A nevrátil se zpátky do metody Main()?

 
Nahoru Odpovědět
19.5.2015 14:18
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Odpovídá na petr.chatar.anton
Michal Štěpánek:19.5.2015 14:19

Do Main() se vrátit musí a tam to ukončíš v případě vyhození vyjímky. Program se neukončuje v třídě, ale v prostředí, které komunikuje s uživatelem.

Editováno 19.5.2015 14:20
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět
19.5.2015 14:19
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Odpovídá na petr.chatar.anton
Michal Štěpánek:19.5.2015 14:23

A pokud to není vysloveně nutnost, vyhnul bych se zpracovávat soubory přes mapovaný disk. Způsobuje to jen problémy, pokud to nemáš dostatečně ošetřeno. Pokud použiješ relativní cestu, ušetříš si spoustu starostí...

Nahoru Odpovědět
19.5.2015 14:23
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Odpovídá na Michal Štěpánek
petr.chatar.anton:19.5.2015 14:27

Mohl bys mi ještě trošku rozvést tohle:
"tam to ukončíš v případě vyhození vyjímky"
V obsluze vyjímky v metodě, kde byla vyvolaná naplním nějakou proměnou, kterou pak v Main() otestuju?

 
Nahoru Odpovědět
19.5.2015 14:27
Avatar
Odpovídá na petr.chatar.anton
Michal Štěpánek:19.5.2015 14:29

v části "catch" se ti má zobrazit vyjímka, tak to v této části ukončíš.

Nahoru Odpovědět
19.5.2015 14:29
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 9 zpráv z 9.