miércoles, 16 de noviembre de 2016

Uso de Excepciones en C#

/*
 * Created by SharpDevelop.
 * User: manuel
 * Date: 08/11/2016
 * Time: 02:32 p. m.
 */
 
using System;

namespace Examen2
{
   
    public class CalculosElectronicos:Interface2
    {
        public double V, R, I;
       
        public CalculosElectronicos()
        {
        }
       
        double Interface1.CalculoVoltaje(double r, double i){
            this.R = r;
            this.I = i;
            this.V = this.R*this.I;
           
            return this.V;
        }
       
         double Interface2.CalculoResistencia(double v, double i){
            this.V = v;
            this.I = i;
           
            try{
           
                this.R = this.V/this.I;
               
           
            }catch(DivideByZeroException){
               
                return 0.0;
            }
           
            return this.R;
        }
    }
}


/*
 * Created by SharpDevelop.
 * User: manuel
 * Date: 08/11/2016
 * Time: 02:27 p. m.
 */
using System;
//using System.Exception;

namespace Examen2
{
    class Program
    {
        class Comprueba{
           
            public int Convertir(String valor){
                int x;
                try{
           
                x = Convert.ToInt16(valor);
           
            }catch(FormatException){
               
                Console.WriteLine("Valores Incorrectos! Pulsa una tecla para continuar.");
                Console.ReadKey(true);
                return 0;
           
            }
                return x;
            }
        }
       
        public static void Main(string[] args)
        {
           
           
            Interface2 cal = new CalculosElectronicos();
            Comprueba comprueba = new Comprueba();
            int op = 0;
            double v,i,r;
            bool menu = true;
           
           
           
           
            while(menu){
           
                Console.WriteLine("1.- Calcular Voltage | 2.- Calcular Resistencia?");
           
            try{
           
                op = Convert.ToInt16(Console.ReadLine());
           
            }catch(FormatException){
               
                Console.WriteLine("Valores Incorrectos! Pulsa una tecla para continuar.");
                Console.ReadKey(true);
           
            }
           
            //El error fué lógico debido a que la instrucción de conversión
            //se estaba ejecutando antes del bloque try catch
           
           
            if(op == 1){
                Console.WriteLine("R = 3 ohms, I = 4 amps y V = {0} volts", cal.CalculoVoltaje(3,4));
                menu = false;
            } else if(op == 2){
               
                Console.WriteLine("Voltaje V?");
               
                v = comprueba.Convertir(Console.ReadLine());
               
                Console.WriteLine("Corriente I?");
               
                i = comprueba.Convertir(Console.ReadLine());
               
                Console.WriteLine("V = {0} volts, I = {1} amps y R = {2} ohms",v,i, cal.CalculoResistencia(v,i));
               
                menu = false;
            } else{
                Console.WriteLine("Error!");
            }
           
            }
            //Sabemos que un usuario puede, de manera
            //erronea introducir un caracter indebido.
           
            Console.Write("Press any key to continue . . . ");
            Console.ReadKey(true);
        }
    }
   
   
}

No hay comentarios:

Publicar un comentario