Quantcast
Channel: Duda sobre excepciones
Viewing all articles
Browse latest Browse all 3

Duda sobre excepciones

$
0
0

Tengo una duda sobre excepciones con el siguiente código:

namespace cociente

{
    class Program
    {
        static void Main(string[] args)
        {
            int a,b,c;
            a = 0;
            b = 0;
            c = 0;
            string tmp = null;

            try
            {
                Console.Write("Escribe el primer número: ");
                tmp = Console.ReadLine();
                a = Convert.ToInt16(tmp);
                Console.Write("Escribe el segundo número: ");
                tmp = Console.ReadLine();
                b = Convert.ToInt16(tmp);

                c = a / b;
                Console.Write("\nEl cociente de a/b es: " + c);
            }
            catch (FormatException)
            {
                Console.Write("El dato introducido, " + tmp + ", no es un número.");
            }
            catch (DivideByZeroException)
            {
                Console.Write("El valor de la segunda variable debe ser distinto de 0");
            }       

            Console.ReadKey();
        } // FIn del método principal
    } // Fin de la clase Program
} // Fin del namespace

Si lo ejecuto introduciendo un valor de "0" a la variable "b", me respecta el catch indicando que la 2a variable debe ser distinta de 0. Pero si cambio el tipo de variables a "double", ya no me respeta el catch. Realiza la división y me arroja el resultado "El cociente de a/b es: infinito" ¿Porqué si sólo cambio el tipo de variable?

Mi código, con el cambio de tipo de variable quedaría de la siguiente forma:

 static void Main(string[] args)
        {
            double a, b, c;
            a = 0;
            b = 0;
            c = 0;
            string tmp = null;

            try
            {
                Console.Write("Escribe el primer número: ");
                tmp = Console.ReadLine();
                a = Convert.ToDouble(tmp);
                Console.Write("Escribe el segundo número: ");
                tmp = Console.ReadLine();
                b = Convert.ToDouble(tmp);
                
                c = a / b;
                Console.Write("\nEl cociente de a/b es: " + c);
            }
            catch (FormatException)
            {
                Console.Write("El dato introducido, " + tmp + ", no es un número.");
            }
            catch (Exception)
            {
                Console.Write("El valor de la segunda variable debe ser distinto de 0");
            }       
          
            Console.ReadKey();




Viewing all articles
Browse latest Browse all 3

Latest Images





Latest Images