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

Odpovědět
vik822
Level 1.5
Level 1.5
Příspěvky: 123
Registrován: 14 srp 2012 20:02

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

Příspěvek od vik822 »

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();
Uživatelský avatar
domitea
Tvůrce článků
Příspěvky: 1971
Registrován: 24 čer 2009 19:46
Bydliště: Královehradecký kraj
Kontaktovat uživatele:

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

Příspěvek od domitea »

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: 7415
Registrován: 23 pro 2010 09:23

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

Příspěvek od faraon »

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: 14 srp 2012 20:02

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

Příspěvek od vik822 »

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: 22 črc 2009 23:09

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

Příspěvek od omilis »

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ů
Příspěvky: 1971
Registrován: 24 čer 2009 19:46
Bydliště: Královehradecký kraj
Kontaktovat uživatele:

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

Příspěvek od domitea »

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: 20 srp 2008 14:02
Bydliště: Brno
Kontaktovat uživatele:

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

Příspěvek od CZechBoY »

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: 22 črc 2009 23:09

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

Příspěvek od omilis »

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: 20 srp 2008 14:02
Bydliště: Brno
Kontaktovat uživatele:

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

Příspěvek od CZechBoY »

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: 14 srp 2012 20:02

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

Příspěvek od vik822 »

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: 20 srp 2008 14:02
Bydliště: Brno
Kontaktovat uživatele:

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

Příspěvek od CZechBoY »

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
Odpovědět

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