• Zadání: Zkuste implementovat v hlavní statické metodě Main pomocí příkazů try, catch ošetření výjimky vyvolané nesprávným zadáním celočíselného kódu aritmetické operace v programu KalkulackaVicenasobneVetveni_Main. Namísto celého čísla bude zadán text "bflm". V případě, že nebude zadán validní kód aritmetické operace, hlavní metodu ukončete
  • Řešení:
    • Hlavní program - Main

static void Main(string[] args)
       {
           /*Deklarace proměnných: 'kod' ... celočíselný kód aritmetické operace, 
            * 'a' ... první zadané číslo, 'b' ... druhé zadané číslo; 
            * 'c' ... výsledek aritmetické operace*/
           int kod;
          double a, b, c;
           //Výpis výzvy k zadání operace
           Console.Write("Zadejte kód operace (1 ... sčítání, 2 ... odečítání, " +
               "3 ... násobení, 4 ... dělení): ");
           //Potenciálně nebezpečný kód
           try
           {
               //Načtení kódu operace
               kod = int.Parse(Console.ReadLine());
           }
           //Handler chyby při konverzi s parametrem handleru
           catch (FormatException exFormat)
           {
               //Výpis parametru handleru
               Console.WriteLine("Chyba při konverzi: {0}", exFormat.ToString());
               //Čekání na stisk klávesy -> Ukončení programu
               Console.ReadKey();
               return;
           }
               //Výpis výzvy k zadání prvního čísla
               Console.Write("Zadejte A: ");
           //Načtení prvního zadaného čísla
           a = double.Parse(Console.ReadLine());
           //Výpis výzvy k zadání druhého čísla
           Console.Write("Zadejte B: ");
           //Načtení druhého zadaného čísla
           b = double.Parse(Console.ReadLine());
           //Přepnutí do příslušné sekce podle hodnoty 'kod'
           switch (kod)
           {
               //Operace sečtení
               case 1:
                   //Sečtení dvou zadaných čísel
                   c = a + b;
                   //Ukonnčení sekce pro kod == 1
                   break;
               //Operace odečtení
               case 2:
                   //Odečtení dvou zadaných čísel
                   c = a - b;
                   break;
               //Operace násobení
               case 3:
                   //Násobení dvou zadaných čísel
                   c = a * b;
                   break;
               //Operace dělení
               case 4:
                   //Podíl dvou zadaných čísel
                   c = a / b; 
                   break;
               //Zadání špatného číselného kódu operace
               default:
                   //Výpis chyby v zadávání kódu
                   Console.WriteLine("Zadali jste špatný číselný kód!");
                   //Zamezení provádění dalších příkazů - opuštění metody
                   return;
           }
           //Výpis textu s hodnotou výsledku
           Console.WriteLine("Výsledek C: {0}", c);
 
           //Čekání na stisk klávesy -> Ukončení programu
           Console.ReadKey();
       }
  • Výstup programu:
Zadejte kód operace (1 ... sčítání, 2 ... odečítání, 3 ... násobení, 4 ... dělení): bflm
Chyba při konverzi: System.FormatException: Vstupní řetězec nemá správný formát.
   v System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)
   v System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info)
   v System.Int32.Parse(String s)
   v KalkulackaVyjimka.Program.Main(String[] args) v C:\Users\fox\OneDrive\TI\TI_Nove\Prednasky\Podklady\Programy\Kalkulacka_nove\KalkulackaVyjimka\KalkulackaVyjimka\KalkulackaVyjimka\Program.cs:řádek 25


Última modificación: domingo, 2 de febrero de 2020, 17:01