
[C#] - vyvolání vyjímky
Dobré odpoledne.
Mám tohle:
try
{
zadani = Convert.ToInt32(text.Text);
}
catch
{
zadani = 10;
}
do proměnné zadani (int) ukládám číslo z TextBoxu...pokud nic nezadám nebo zadám text (místo čísla), tak se mi vyvolá vyjímka v bloku catch - uloží se do této proměnné 10. Takhle to chci, ale ještě bych potřeboval vyvolat vyjímku, pokud zadám větší nebo naopak menší číslo než stanovím. Tz. zadám třeba 150 -> to nechci, tak vyvolám vyjímku. Jak to mám udělat?
Děkuju za odpovědi.
Mmmmm. Já osobně bych se s tímto "řešením" nespokojil.
Bloky jako Try, catch a finally se obecně používají na něco hodně silného.
Například pokud program používá nějaké svoje soubory, ale nějaký Janek mu je v průběhu jeho spuštění někam přesune a nebo je uzamkne pro zápis (například je otevře v notepadu).
Takže kontrolovat uživatelův vstup přes try a catch je přece jenom trochu velký kanón na vrabce.
Kromě toho vyjímky mají další nepříjemnou vlastnost, která není vidět ani na úrovni kódu, dochází k tzv.
přepínání kontextu, což vadí když vyžaduješ výkon.
Namísto toho bych toto jako laik asi udělal v podobném duchu:
Aha, tak to jsem nevěděl, že by vyjímky nebyly až tak vhodný...
A k tomu, co si napsal. Trochu bych to potřeboval vysvětlit...jaký význam tam jaký x, y atd.
Funkce, která kontroluje vstup pro cela cisla by mohla vypadat nějak takto:
A preco nenapises az po tom try-catch bloku
? Nieco ti v tom brani?
Mohol by si to if napisat aj do try bloku (po tom convertovani) a ak to bude vacsie alebo mensie ako hranice tak vyvolat vynimku pomocou "throw". Priklad http://msdn.microsoft.com/en-us/library/6dekhbbc(VS .80).aspx
V tomhle mi jistě nic nebrání, myslel jsem, že když už je část řešena pomocí vyjímek, tak (třeba pro přehlednost) by nebylo od věci to celé řešit pomocí vyjímek.
Tak pouzi if a throw v sekcii "try". Nechapem ako inac by si chcel testovat hodnotu, ked nie pomocou if.
Máš pravdu, že to chci zbytečně složitě. Díky za odpověď.