Ošetření "Uložit jako"

Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek

Moderátor: Mods_senior

vik822
Level 1.5
Level 1.5
Příspěvky: 123
Registrován: srpen 12
Pohlaví: Muž
Stav:
Offline

Ošetření "Uložit jako"

Příspěvekod vik822 » 14 dub 2014 13:41

Dobrý den, mám hotový projekt na Prg, ale učitel mi řekl ať ošetřím Uložit, aby mi nespadla aplikace, ale já vůbec netuším co by na ní mohlo padat :D prosím o radu, díky předem.
dataGridView1.EndEdit();
save.FileName = "tabulka";
save.DefaultExt = "txt";
save.Filter = "Textové soubory|*.txt";
if (save.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
StreamWriter writer = new StreamWriter(save.FileName);
DataRowCollection seznam = sada.DataTable1.Rows;
foreach (DataRow radek in seznam)
{
writer.WriteLine(radek[0].ToString().PadRight(51) + ((double)radek[2]).ToString("#.0"));
}
writer.Close();

Reklama
Uživatelský avatar
domitea
Tvůrce článků
Level 4.5
Level 4.5
Příspěvky: 1971
Registrován: červen 09
Bydliště: Královehradecký kraj
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: Ošetření "Uložit jako"

Příspěvekod domitea » 14 dub 2014 16:46

Co když ten soubor neexistuje? Podařilo se opravdu data zapsat na správné místo? Došlo místo na disku? Zápis do souboru, to je věda :smile: . Tam se může stát chyb....

Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7397
Registrován: prosinec 10
Pohlaví: Muž
Stav:
Offline

Re: Ošetření "Uložit jako"

Příspěvekod faraon » 14 dub 2014 17:36

Co to je za odporný jazyk?

Takže to vezmeme popořádku. Nejdřív se nemusí podařit soubor otevřít, hned z několika možných příčin. Potom může mít nastavený atribut pouze pro čtení (což se dá udělat i během práce s ním), takže do něj nejde zapisovat. Také může soubor "zmizet" během zápisu, protože nějaký blbštajn vyškubne flashku bez toho aby dal "bezpečně odpojit". No a nakonec ten soubor třeba nejde uzavřít, protože je plný disk a systém nemá kam flushnout cache.

Co dalšího se může stát když to bude třeba síťový disk, to si radši ani nechci představovat :lol:
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)

vik822
Level 1.5
Level 1.5
Příspěvky: 123
Registrován: srpen 12
Pohlaví: Muž
Stav:
Offline

Re: Ošetření "Uložit jako"

Příspěvekod vik822 » 14 dub 2014 20:53

Dobrá, je to tedy C# a zajímalo by mě jak to ošetřit, nemám vůbec ponětí :D

omilis
Level 1.5
Level 1.5
Příspěvky: 118
Registrován: červenec 09
Pohlaví: Muž
Stav:
Offline

Re: Ošetření "Uložit jako"

Příspěvekod omilis » 14 dub 2014 21:18

Kód: Vybrat vše

try
{
//zápis do souboru
}
catch (Exception e)
{
//odchycení chyby, můžeš použít více catch bloků (http://msdn.microsoft.com/en-us/library/system.io.ioexception%28v=vs.110%29.aspx)
}
finally
{
writer.close();
}


případně může použít using (http://msdn.microsoft.com/cs-cz/library/yh598w02.aspx)

Uživatelský avatar
domitea
Tvůrce článků
Level 4.5
Level 4.5
Příspěvky: 1971
Registrován: červen 09
Bydliště: Královehradecký kraj
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: Ošetření "Uložit jako"

Příspěvekod domitea » 14 dub 2014 21:41

To už raději klasiku Try-Catch, než nějaký using. Když jsem v C# ještě něco dělal (to byla verze .NET 3.5), tak using sloužil jen na import namespaců :lol:

Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: srpen 08
Bydliště: Brno
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: Ošetření "Uložit jako"

Příspěvekod CZechBoY » 14 dub 2014 21:44

using neslouží k ošetření chyb :D

try-catch(-finaly) to jistí
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW

omilis
Level 1.5
Level 1.5
Příspěvky: 118
Registrován: červenec 09
Pohlaví: Muž
Stav:
Offline

Re: Ošetření "Uložit jako"

Příspěvekod omilis » 14 dub 2014 21:54

domitea píše:To už raději klasiku Try-Catch, než nějaký using. Když jsem v C# ještě něco dělal (to byla verze .NET 3.5), tak using sloužil jen na import namespaců :lol:

Tak using je v podstatě try-finally

CZechBoY píše:using neslouží k ošetření chyb :D

Ale aplikace nespadne, což je požadavek od učitele :D

Jinak raději pužít ten try-catch samozřejmě

Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: srpen 08
Bydliště: Brno
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: Ošetření "Uložit jako"

Příspěvekod CZechBoY » 14 dub 2014 22:04

Budoucí programátor microsoftu píše :D
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW

vik822
Level 1.5
Level 1.5
Příspěvky: 123
Registrován: srpen 12
Pohlaví: Muž
Stav:
Offline

Re: Ošetření "Uložit jako"

Příspěvekod vik822 » 14 dub 2014 22:51

Ještě poslední věc, stačilo by jenom try-catch a dát tam message box? a díky všem :)

Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: srpen 08
Bydliště: Brno
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: Ošetření "Uložit jako"

Příspěvekod CZechBoY » 15 dub 2014 11:58

Jop, ale záleží co to bude za chybu.
Když soubor neexistuje tak bych ho vytvořil.
Když bude odpojenej disk tak znova otevřeš savefiledialog.
atd.
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW


Zpět na “Programování a tvorba webu”

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 4 hosti