Stránka 1 z 1

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

Napsal: 14 dub 2014 13:41
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();

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

Napsal: 14 dub 2014 16:46
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....

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

Napsal: 14 dub 2014 17:36
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:

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

Napsal: 14 dub 2014 20:53
od vik822
Dobrá, je to tedy C# a zajímalo by mě jak to ošetřit, nemám vůbec ponětí :D

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

Napsal: 14 dub 2014 21:18
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)

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

Napsal: 14 dub 2014 21:41
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:

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

Napsal: 14 dub 2014 21:44
od CZechBoY
using neslouží k ošetření chyb :D

try-catch(-finaly) to jistí

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

Napsal: 14 dub 2014 21:54
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ě

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

Napsal: 14 dub 2014 22:04
od CZechBoY
Budoucí programátor microsoftu píše :D

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

Napsal: 14 dub 2014 22:51
od vik822
Ještě poslední věc, stačilo by jenom try-catch a dát tam message box? a díky všem :)

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

Napsal: 15 dub 2014 11:58
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.