Bueno, después de haber rendido en la facultad todo lo que tenga que ver con java y base de datos, ya tengo un tiempito libre para dedicarme a los post y terminar los temas que faltan (3 o 4) En programando en C# 20 vamos a aprender excepciones. Las excepciones son un modo de escribir el código que en el caso de dar error te avisa y no te corta o rompe el programa; sinó que trata de ejecutarlo y en el caso de dar error te ejecuta otra cosa, en la mayoría de los casos un mensaje de error. Para empezar vamos a aprender como escribir una excepción simple, para ello usaremos las palabras “try” y “catch” de este modo: public void ejemploExcepcion(int num1, int num2) { int res = 0; try { res = num1 / num2; } catch (Exception e) { MessageBox.Show("Error: " + e.Message, "Excepción detectada"); } } > Fíjense en dos detalles, primero que todo lo que vaya dentro del try va encapsulado, luego el código que creen que les puede dar error y luego el catch, donde entre paréntesis van a usar un objeto de una clase Exception para que les tire el mensaje de lo que ha pasado. Eso se ve claramente luego en el paréntesis que hay dentro del objeto que se genera con el MessajeBox, que es un cartelito de error que sale con algunos botones de aceptar y si quieren de cancelar (etc, todo lo que quieran con este objeto, como mensaje de error o cualquier otro tipo de mensaje, lo pueden crear dentro del paréntesis). Así como tenemos una clase Exception genérica, también tenemos algunas mas, como por ejemplo FormatException, que sirve para las excepciones respecto de haber puesto mal un carácter dentro de un textbox, como por ejemplo que el carácter deba ser numérico y le hayan escrito una palabra. También tenemos la excepcion DivideByZeroException que lo que hace es ver si un número no sea dividido por cero. Hay otras tantas más, eso se los dejo como tarea para que averigüen. Además, si bien no es raro que usen distintas formas de excepciones, lo mejor es que lo vayan aprendiendo a medida que lo vayan necesitando. Por último pueden poner un "finaly" que lo que hace es una secuencia de código que ustedes pueden manejar y la va a ejecutar por defecto siempre public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void btnSalir_Click(object sender, EventArgs e) { Application.Exit(); } private void btnCalcular_Click(object sender, EventArgs e) { int num1, num2; int res; try { num1 = Convert.ToInt16(tbNum1.Text); num2 = Convert.ToInt16(tbNum2.Text); r = n1 / n2; labResul.Text = res.ToString(); } catch (FormatException Format) { MessageBox.Show("Error: " + Format.Message, "Excepción detectada"); } catch (DivideByZeroException DivCero) { MessageBox.Show("Error: " + DivCero.Message, "Excepción detectada"); } catch (Exception e) { MessageBox.Show("Error: " + e.Message, "Excepción detectada"); } finally{ labStatus.Text = "Hecho"; } } } > Por otro lado, nosotros tenemos la posibilidad de generar nuestros propios mensajes para las excepciones, así podemos controlar lo que salga en pantalla. La clase: class Dividir { private int num1, num2, res; public void setNum1(int n){ num1 = n; } public void setNum2(int n){ num2 = n; } public void divide(){ if (num2 != 0) res = num1 / num2; else throw new Exception("Siga participando, no se puede dividir por cero"); }//Acá lo que hacemos con el throw "se utiliza para señalizar la aparición de una situación anómala durante la ejecución del programa". //Con el new lo que hacemos es hacer un nuevo objeto, donde en la clase Exception hay un constructor que hacepta un string como mensaje que va a devolver. //Los objetos sin nombre como este se llaman objetos anónimos. public int getResult(){ return res; } } > En el formulario va a quedar de esta manera: public Form1() { InitializeComponent(); } private void btnSalir_Click(object sender, EventArgs e) { Application.Exit(); } private void btnCalcular_Click(object sender, EventArgs e) { int num1, num2, res; Dividir d = new Dividir(); try { num1 = Convert.ToInt16(tbN1.Text); num2 = Convert.ToInt16(tbN2.Text); d.setNum1(num1); d.setNum2(num2); d.divide(); res = d.getResult(); labResul.Text = res.ToString(); } catch (FormatException Format) { MessageBox.Show("Error: " + Format.Message, "Excepción detectada"); } catch (Exception o) { MessageBox.Show("Error: " + o.Message, "Excepción detectada"); }//Cuando se produzca esta excepción, como excepción general se va a producir el mensaje de error que pusimos en la clase. finally{ labStatus.Text = "Hecho"; } } } > A su vez, nosotros podemos armar nuestras propias excepciones generando mensajes de error que nosotros queramos, haciendo que se fije en determinada acción para que nosotros podamos programarla. La clase excepción quedaría así: class miExcepcionException: ApplicationException {//Heredamos una clase "ApplicationException" donde ahí va a contener lo necesario para que nos transmita el error public miExcepcionException() : base("Mi gran excepción: Error div 0") //Acá le puedo poner un mensaje genérico, {//O sea,fijensé que en el ejemplo anterior podíamos pasarle un mensaje por medio de un constructor, en el caso de que no se lo haga, le pasamos este mensaje por defecto. } public miExcepcionException(string texto) : base(texto) {//Esto es para el caso de que queramos ponerle otro mensaje de error. } public miExcepcionException(string texto, Exception exterior) : base(texto, exterior) //Esto es para que usemos la clase Excepcion, le pasamos un objeto de la misma para que nos tome un tipo de manejo distinto (otra clase de mensajes) { } } > La clase para dividir va a quedar de esta manera: class divide { private int n1, n2, r; public void setN1(int v){ n1 = v; } public void setN2(int v){ n2 = v; } public void dividir(){ if (n2 != 0) r = n1 / n2; else throw new miExcepcionException(); //Fijensé que acá es donde cambia. El formulario queda igual. } public int getResult(){ return r; } } > Tarea: Generen un programa con sus propios mensajes de error. Próximamente en programando vamos a aprender a hacer gráficos en nuestras ventanas y cargar imagenes. Por otro lado, también vamos a aprender a hacer threat y por último, el tema mas complicado "Listas enlazadas" Luego que termine esos tres post, vamos a ver un programita de chat (que no creo que sea pronto). Luego de ese post, o quizás en el medio, voy a empezar a dar Java y Python
Datos archivados del Taringa! original
15puntos
1,726visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
1visitas
0comentarios
Dar puntos: