Ausnahmebehandlung mit try-catch

Programmierbeispiel Taschenrechner

 

namespace ConsoleApplication_Taschenrechner
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Bitte wählen Sie eine Rechenart aus:");
            int rechenArt = 0;
            do
            {
                Console.WriteLine(" Multiplikation <1>");
                Console.WriteLine(" Addition       <2>");
                Console.WriteLine(" Subtraktion    <3>");
                Console.WriteLine(" Division       <4>");
                Console.WriteLine(" Wurzel ziehen  <5>");

                try
                {
                    rechenArt = Convert.ToInt32(Console.ReadLine());
                }
                catch (FormatException fx)
                {
                    Console.WriteLine("Fehlermeldung: " + fx.Message);
                    Console.WriteLine("Bitte geben Sie eine Zahl ein!");
                }

            }while(rechenArt == 0);

            //Erste Zahl eingeben
            if (rechenArt==5)
                Console.WriteLine("Bitte geben Sie eine Zahl ein:");
            else
                Console.WriteLine("Bitte geben Sie zwei Zahlen ein:");
            
            Console.WriteLine("Zahl1: ");
            double zahl1 = Convert.ToDouble(Console.ReadLine());
            
            //Zweite Zahl eingeben (ausser beim Wurzel ziehen)
            double zahl2 = 0;
            if (rechenArt != 5)
            {
                Console.WriteLine("Zahl2: ");
                zahl2 = Convert.ToDouble(Console.ReadLine());
            }

            //Berechnung wählen
            double ergebnis = 0;
            switch (rechenArt)
            {
                case 1:
                    ergebnis = Multiplikation(zahl1, zahl2);
                    break;
                case 2:
                    ergebnis = Addition(zahl1, zahl2);
                    break;
                case 3:
                    ergebnis = Subtraktion(zahl1, zahl2);
                    break;
                case 4:
                    ergebnis = Division(zahl1, zahl2);
                    break;
                case 5:
                    ergebnis = Sqrt(zahl1);
                    break;
            }

            //Ausgabe
            Console.WriteLine("Ergebnis: " + ergebnis);

            Console.ReadKey();
        }

        private static double Addition(double zahl1, double zahl2)
        {
            return zahl1 + zahl2;
        }

        private static double Subtraktion(double zahl1, double zahl2)
        {
            return zahl1 - zahl2;
        }

        private static double Multiplikation(double zahl1, double zahl2)
        {
            return zahl1 * zahl2;
        }

        private static double Division(double zahl1, double zahl2)
        {
            if (zahl2 != 0)
                return zahl1 / zahl2;
            else
                return 0;
        }

        private static double Sqrt(double zahl1)
        {
            double ergebnis = Math.Sqrt(zahl1);
            if (Double.IsNaN(ergebnis))
                return 0;
            
            return ergebnis;
        }
    }
}