Diskuze:
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 16 zpráv z 16.
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Procházíš pole jako seznam. V proměnné i se kupodivu nebude nacházet index do pole, ale hodnoty, které se na jednotlivých pozicích nachází. Tedy zřejmě nuly. Všechno tedy sázíš do první položky pole.
Tak to nechceš...
double[][] allValues;
int rows, collumns;
try
{
rows = int.Parse(pocetRadku.Text);
collumns = int.Parse(pocetSloupcu.Text);
allValues = new double[rows][];
}
catch
{
práce s výjimkou
}
...
for(int x = 0; x < rows; x++)
for(int y = 0; y < collumns; y++)
{
...
}
Nemám rád takovéto konstrukce - ale když neznám celek, těžko to vymyslet jinak...
V Javě si nechávám editorem generovat blok catch takto:
} catch (Exception e) {
e.printStackTrace();
}
Nestane se mi pak, že bych nějakou výjimku zapomněl ošetřit. Pokud ji potřebuji ošetřit jinak, tak to prostě přepíšu.
Existuje něco podobného jako e.printStackTrace() i pro C#?
Exception:
http://msdn.microsoft.com/…ception.aspx
Z ní lze dostat informace o typu, umístění atd. Viz.:
http://msdn.microsoft.com/…ception.aspx
Jen nechápu, proč se nedá posílat přímo - něco jako zdědit a přidat...
Myslel jsem něco zjednodušujícího. Pokud v Javě ten e.printStackTrace() nechám bez jakékoli změny přesně tak, jak mi to editor vygeneroval, bude mi to fungovat naprosto perfektně. Nic dalšího už nemusím přidávat, žádnou deklaraci, nic.
Samozřejmě pokud chci výjimku ošetřit jinak, musím udělat změnu.
Právě proto se tě ptám, jak by sis upravil template pro C#.
V Javě to mám vyřešené. e.printStackTrace() jsem tam chtěl a proto jsem si ho do toho template dal. Rozhodně je to lepší, než pitomý string "práce s výjimkou". Myslím si, že by sis měl upravit template, protože taková hovadina, která ani není syntakticky správně, tam nepatří.
Ale to nemá s pluginy nic společného. Ptal jsem se tě, jak bys univerzálním způsobem ošetřil výjimku v C#. Napsal jsem ti, jak to dělám v Javě a zajímá mě, jak se to dělá v C#.
Neptal jsem se, jak se upravuje template, ale co by sis do něho dal.
Však jsem poslal Exception a jak z něj dostat konkrétní výjimku. A to si musíš dát ke generaci...
Konkrétní výjimku mi přece dodá překladač, ne? Aha, to umí jen Java.
Tak ještě jednou: Jak v C# univerzálním způsobem ošetříš výjimku vypsáním zásobníku na chybovou konzoli? Nepotřebuji kus kódu na 10 řádek. Chci jeden řádek, který umístím do bloku catch a nic víc. Žádné další deklarace. Prostě analogicky jako v Javě funguje e.printStackTrace().
Aha...
http://msdn.microsoft.com/…cktrace.aspx
This is it?
catch (Exception e)
{
Console.WriteLine(e.StackTrace);
}
No vida, je to docela podobné. Jenom to vypisuje na výstupní konzoli místo na chybovou. Takže po úpravě se konečně dostanu k požadovanému
catch (Exception e)
{
Console.Error.WriteLine(e.StackTrace);
}
Kdybys to napsal místo původního
catch
{
práce s výjimkou
}
bylo by to přímo skvělé.
Zobrazeno 16 zpráv z 16.