Tallerp1 Manejo Y Tratamiento De Errores

  • June 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Tallerp1 Manejo Y Tratamiento De Errores as PDF for free.

More details

  • Words: 944
  • Pages: 10
10/10/2009

Manejo y tratamiento de errores y excepciones C# .NET 2005 MCPD Ing. Cecilia Wiesse

MCPD Cecilia Wiesse

Contenido   

Tipos de errores Uso del depurador Manejo de excepciones

MCPD Cecilia Wiesse

1

10/10/2009

Tipos de errores 

Errores de compilación 



Si hay errores de sintaxis de C#, o si no es posible resolver identificadores en un tipo o miembro conocido, la compilación no finalizará correctamente y verá una lista de errores en la Lista de errores (Ventana). Son errores que impiden que el programa se ejecute. http://msdn.microsoft.com/es-es/library/ms173083.aspx

MCPD Cecilia Wiesse

Tipos de errores 

Errores en tiempo de ejecución 



Los errores en tiempo de ejecución son errores que aparecen mientras se ejecuta el programa. Estos errores aparecen normalmente cuando el programa intenta una operación que es imposible que se lleve a cabo. Ejemplo:  

Una división por cero. Raíz de un número negativo.

MCPD Cecilia Wiesse

2

10/10/2009

Tipos de errores 

Errores lógicos 



Los errores lógicos son errores que impiden que el programa haga lo que estaba previsto. El código puede compilarse y ejecutarse sin errores, pero el resultado de una operación puede generar un resultado no esperado. Ejemplo:  

Si se retorna el apellido en lugar del nombre del alumno. Si retorna un stock incorrecto.

MCPD Cecilia Wiesse

Uso del depurador 



Se lanza desde la ventana de programación en la cual se puede establecer en cualquier momento un punto de interrupción en una línea de código presionando F9. Al presionarse F5 para ejecutar la aplicación en el depurador de Visual Studio, la aplicación se detendrá en la línea y podrá examinar el valor de las variables, observar cómo o cuándo la ejecución sale de un bucle, recorrer el código línea a línea mediante la tecla F10, F11 o establecer puntos de interrupción adicionales.

MCPD Cecilia Wiesse

3

10/10/2009

Uso del depurador

http://msdn.microsoft.com/es-es/library/ms173083.aspx

MCPD Cecilia Wiesse

Excepciones: tratamiento de errores 

El tradicional tratamiento procedural de errores es complicado  

Ante un error producido en una función se devuelve un código de error que se analiza al retornar al punto de llamada Este mecanismo tiene problemas para tratar el error en otro módulo diferente a donde se ha producido.

MCPD Cecilia Wiesse

4

10/10/2009

Lógica del programa int errorCodigo = 0; FileInfo source = new FileInfo("code.cs"); if (errorCodigo == -1) goto Fallo; int longitud = (int)source.Length; if (errorCodigo == -2) goto Fallo; char[] contenido = new char[longitud]; if (errorCodigo == -3) goto Fallo; // No hay problemas ... Tratamient o de error

Fallo: …

MCPD Cecilia Wiesse

Excepciones: bloques try-catch  

Se incluye el código normal en el bloque try Incluir el código para tratar las excepciones en un bloque catch.

try { Console.WriteLine("Escriba un número"); Lógica del programa int i = int.Parse(Console.ReadLine()); } catch (OverflowException capturada) { Tratamiento Console.WriteLine(capturada); de error } MCPD Cecilia Wiesse

5

10/10/2009

Objetos Exception  





Solución orientada a objetos para el tratamiento de errores. Una excepción es una situación que ocurre durante la ejecución del programa y que requiere un tratamiento inmediato. Una vez se genera una excepción, el código puede detectarla y tratarla él mismo o “lanzarla” para que la trate otro módulo. El programador puede crear excepciones propias y que tengan variables para guardar información del error.

MCPD Cecilia Wiesse

Objetos Exception  

Jerarquía de objetos: heredan de System.Exception Ejemplos:   

InvalidCastException: Convertir objetos incompatibles DivideByZeroException: División por 0 IndexOutOfRangeException: Acceso fuera del rango de una tabla

MCPD Cecilia Wiesse

6

10/10/2009

Excepciones: bloques try-catch   

Cada bloque catch captura una clase de excepción Un bloque try puede tener un bloque catch general Un bloque try no puede capturar una clase derivada de una clase de excepción capturada en un bloque catch anterior

MCPD Cecilia Wiesse

 Ejemplo: try { Console.WriteLine(“Escriba el primer número"); int i = int.Parse(Console.ReadLine()); Console.WriteLine("Escriba el segundo número"); int j = int.Parse(Console.ReadLine()); int k = i / j; } catch (OverflowException capturada) {…} catch (DivideByZeroException capturada) {…}

MCPD Cecilia Wiesse

7

10/10/2009

 Ejemplo: try { Int32 index = 10; while(index-- != 0){ Console.WriteLine(100/index); } } catch(DivideByZeroException) { Console.WriteLine( “Capturada excepción: división x 0"); } Console.WriteLine(“Seguimos ejecutando"); MCPD Cecilia Wiesse

Excepciones: throw  

Lanza una excepción apropiada Asigna a la excepción un mensaje significativo.

throw expression ; if (minuto < 1 || minuto >= 60) { throw new InvalidTimeException(minuto + " no es un minuto válido"); // !! Código no alcanzado !! } MCPD Cecilia Wiesse

8

10/10/2009

Excepciones: finally 



Si lanzamos una excepción y... existe algún tipo de “clean-up” a realizar: cerrar un fichero, cerrar conexiones, ... Podemos utilizar la sentencia finally que garantiza que ese código siempre se ejecutará Monitor.Enter(x); try { ... } finally { Monitor.Exit(x); } MCPD Cecilia Wiesse



Ejemplo:

try { // Quizás se lanza una excepción // o se ejecuta un return return; } finally { Console.WriteLine( “Código ‘finally’ se ejecuta siempre"); }

MCPD Cecilia Wiesse

9

10/10/2009

Comprobación de desbordamiento aritmético 

Por defecto, el desbordamiento aritmético no se comprueba 

Un comando checked activa la comprobación de desbordamiento

checked { int numero = int.MaxValue; Console.WriteLine(++numero); }

OverflowException Se lanza un objeto excepción. WriteLine no se ejecuta

MCPD Cecilia Wiesse

Excepciones: normas 

Lanzamiento    



Evitar excepciones para casos normales o esperados Nunca crear ni lanzar objetos de clase Exception Incluir una cadena de descripción en un objeto Exception Lanzar objetos de la clase de excepción más específica posible

Captura  

Ordenar los bloques catch de lo específico a lo general No permitir que salgan excepciones de Main

MCPD Cecilia Wiesse

10

Related Documents