prueba

Page 212

El lenguaje de programación C#

Tema 16: Instrucciones

mostrando un mensaje de error en el que se describe la excepción producida (información de su propiedad Message) y dónde se ha producido (información de su propiedad StackTrace) Así, dado el siguiente código fuente de ejemplo: using System; class PruebaExcepciones { static void Main() { A obj1 = new A(); obj1.F(); } } class A { public void F() { G(); } static public void G() { int c = 0; int d = 2/c; } }

Al compilarlo no se detectará ningún error ya que al compilador no le merece la pena calcular el valor de c en tanto que es una variable, por lo que no detectará que dividir 2/c no es válido. Sin embargo, al ejecutarlo se intentará dividir por cero en esa instrucción y ello provocará que aborte la aplicación mostrando el siguiente mensaje: Unhandled Exception: System.DivideByZeroException: Attempted to divide by zero. at PruebaExcepciones.Main()

Como se ve, en este mensaje se indica que no se ha tratado una excepción de división por cero (tipo DivideByZeroException) dentro del código del método Main() del tipo PruebaExcepciones. Si al compilar el fuente hubiésemos utilizado la opción /debug, el compilador habría creado un fichero .pdb con información extra sobre las instrucciones del ejecutable generado que permitiría que al ejecutarlo se mostrase un mensaje mucho más detallado con información sobre la instrucción exacta que provocó la excepción, la cadena de llamadas a métodos que llevaron a su ejecución y el número de línea que cada una ocupa en el fuente: Unhandled Exception: System.DivideByZeroException: Attempted to divide by zero. at A.G() in E:\c#\Ej\ej.cs:line 22 at A.F() in E:\c#\Ej\ej.cs:line 16 at PruebaExcepciones.Main() in E:\c#\Ej\ej.cs:line 8


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.