/// <summary> /// Método pre-creado de conversión de temperaturas. Celsius a Fahrenheits y a Kelvins. /// </summary> public static void TmpCel() { bool rep = true; //Declaramos un booleano en condicion true para poder ejecutar un while a continuación while (rep) { Console.Write($"Introduzca una temperatura en {temps[0]} a convertir:\n>> "); try { double cels = double.Parse(Regex.Replace(Console.ReadLine(), "[.,']", CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator)); //En caso de no poder por el motivo que sea, pasaremos al bloque catch. Console.WriteLine("\n{0} {1} a {2} es: {3}", frmcv, temps[0], temps[1], frms[4]);//Para ahorrar espacio utilizamos variables para acortar el código Console.WriteLine("{0} {1} a {2} es: {3}", frmcv, temps[0], temps[2], frms[2]); Op_Temp.OpCelFahrKel(cels); } catch (Exception e) when(e.GetType() != typeof(FormatException)) //Aquí creamos un encapsulador que en caso de error va a comprobar que el tipo de excepción producida no sea FormatException. //Y en caso de que sea FormatException, el programa ejecutara el código del catch que contenga el argumento FormatException { Console.ForegroundColor = ConsoleColor.Red; //Cambiamos el color para que quede mejor. Console.WriteLine(e.Message + "\n"); Console.ForegroundColor = ConsoleColor.Green; //Ponemos el color inicial } catch (FormatException e) //Este es el bloque catch que se ejecutara en caso de que la excepción producida sea FormatException { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine(FrmExc); //Llamamos a la constante declarada al principio del programa Console.WriteLine(e.Message + "\n"); //e.Message nos permite mostrar una descripción corta del error, sin mostrar código del programa. Console.ForegroundColor = ConsoleColor.Green; } Console.Write(Rp); /*Creamos una condicion if, con un else if y con un else final, ya que este último vendría siendo el while; para mostrar en pantalla la cadena "go" * con la instrucción go.ToUpper() hacemos que el valor introducido se combierta a mayúsculas, y si no es igual a S (!= "S") hace que el bool rep * sea false, finalizando el bucle while */ string go = Console.ReadLine(); if (go.ToUpper() != "S")//Esto comprueba si el texto introducido en mayúsculas es igual a S, y en caso de ser diferente ejecuta sale del bucle { rep = false; } } }