Programación Orientada a Objetos en C#.NET CAPÍTULO 8 EXCEPCIONES. Ing. Bruno López Takeyas, M.C.

Documentos relacionados
Programación Orientada a Objetos en C#.NET CAPÍTULO 8 DELEGADOS. Ing. Bruno López Takeyas, M.C.

Excepciones. Excepciones

Parte I: Programación en un lenguaje orientado a objetos

Un identificador le da nombre único a un elemento en un programa (Variables, procedimientos, etc.). No puede contener operadores como + - * /

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Formato para prácticas de laboratorio

Uso de excepciones en Java

HOJA DE EJERCICIOS 5 PROGRAMACIÓN CON EXCEPCIONES EN JAVA

PROGRAMACIÓN ORIENTADA A OBJETOS 10/02/2009. Examen de Java. Nombre: DNI: Titulación:

ARTÍCULO: IMPLEMENTACIÓN DE MÉTODOS EN C#.NET

Presentación. Programación I. Programación Orientada a Objetos. :: Prof. Yeniffer Peña

UD 4 GESTIÓN DE ERRORES. Pedro J. Ponce de León. Versión

Tema 14: Excepciones

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

Tema 1 INTRODUCCIÓN A LOS LENGUAJES DE PROGRAMACIÓN

TEMA 8. Excepciones en Java. Curso de Java. Manejo de Excepciones

CAPÍTULO 14 MANEJO DE EXCEPCIONES

Métodos CON valor de retorno

Introducción a Java 10/02/2011. Tokens. Juan Manuel Fernández Peña Curso Rev Tokens. Tokens

INTRODUCCION A LA PROGRAMACION EN JAVA

CAPÍTULO 6 COMPOSICIÓN Y AGREGACIÓN

Tema: Estructuras de Selección en C#.

GESTIÓN DE EXCEPCIONES EN JAVA. CAPTURA CON BLOQUES TRY CATCH Y FINALLY. EJEMPLOS RESUELTOS. (CU00927C)

CURSO : ESTRUCTURA DE DATOS DOCENTE : ING. JUAN ZEVALLOS VALLE

Construcciones del Lenguaje Java

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

Instrucciones de control

Tema 4. Excepciones en Java

Programación Orientada a Objetos. Java: Excepciones

INF 473 Desarrollo de Aplicaciones en Java

CAPÍTULO 9 SERIALIZACIÓN (ALMACENAMIENTO DE OBJETOS EN ARCHIVOS)

Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs.

Diseño Basado en Componentes Curso 2008 / 09

Programación Orientada a Objetos. Java: Excepciones

Si bien hay gran cantidad de excepciones, todas derivan de la clase Exception, además de las excepciones ya manejadas, se pueden crear propias.

Excepciones en Programación Orientada a Objetos

Introducción a Java. Introducción a Java. Programación I

Manejo de Excepciones

Eventos. Nota: Los eventos poseen las siguientes características:

Práctica : Creación y uso de métodos

Programación Orientada a Objetos en C#.NET CAPÍTULO 8 E V E N T O S. Ing. Bruno López Takeyas, M.C.

Programación Orientada a Objetos con C#

Repaso de las características más importantes de la programación Java y su adaptación a Android

Excepciones. Gonzalo Méndez - Dpto. Ingeniería de Software e Inteligencia Artificial. Excepciones

Tema 4: Corrección y Robustez en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle

Manejo de excepciones en Java. ELO329: Diseño y Programación Orientados a Objetos Agustín J. González

Elementos léxicos del lenguaje de programación Java

Excepciones LSUB, GSYC, URJC. Monday, February 4, 13

7. Otras sentencias Sentencia break. 84 A. García-Beltrán y J.M. Arranz

Estructura de datos y Programación

1. (1 punto) Dado el siguiente fragmento en Java:

Práctica #5: Uso de control de flujo, Excepciones y Lectura Estándar

GUÍA DE TRABAJO N 11 LENGUAJE C# Programación de Software Articulación SENA Grado 10 Ing. Néstor Raúl Suarez Perpiñan Página 2 de 11

Guia#9: Punteros en C#.

Tutorial de C# Operadores, Control de Flujo y Excepciones. Por: Óscar López, M.Sc.

1. Cuántas sentencias hay en la secuencia principal del siguiente programa?

Resumen Manejo de Excepciones

Tema 5 Corrección y Robustez Excepciones en Java

CAPÍTULO 4: EXCEPCIONES EN JAVA

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

Es ambigua, ya que la división y la multiplicación tienen el mismo grado de precedencia, qué parte de la expresión se realiza primero?

Temario. Tema 2. Tecnología de Desarrollo Software. 2.1 Excepciones en C Prueba y Depuración. 2.3 Documentación

Manejo de errores: Excepciones en Java. ELO329: Diseño y Programación Orientados a Objetos

Bloque II. Elementos del lenguaje de programación Java

[Column(Name = "FirstName", DbType = "varchar(10)")] public string FirstName { get; set; }

a. Cuántas veces se ejecuta la instrucción System.out.println? b. Cuál es el diagrama de flujo correspondiente a este fragmento?

UNADM. Estructura de datos. Guillermo Duran Garcia AL Actividad 2. Identificación de errores en métodos de ordenación

Estructuras de control selectivas

Unidad Didáctica 3. Tipos genéricos. Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos

PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez

3.3 Conceptos Básicos del Lenguaje Java

Fundamentos de programación

Objetivos. El alumno empleará el concepto de excepción en la programación orientada a objetos para el manejo de errores de ejecución.

Ingeniería del Software Separación entre Presentación y Lógica del Negocio

MANEJO DE EXCEPCIONES en C++ Dr. Oldemar Rodríguez R. Escuela de Informática Universidad Nacional

Unidad VI. archivos de texto llano o texto simple por carecer de información destinada a generar formatos y tipos de letra.

TEMA 8. Agenda. Excepciones

Depto. Ingeniería de Sistemas Telemáticos Universidad Politécnica de Madrid ETSI Telecomunicación Fundamentos de Programación 15 de diciembre de 2011

Java: control de excepciones

2. Estructura de un programa en Java

Identificadores, palabras reservadas, tipos de datos, operadores aritméticos y el sistema estándar de salida en Java

Tema 15: Aserciones 0

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Prueba N o 1. Programación II

COMPILACIÓN CONDICIONAL

TEMA 5. EXCEPCIONES EN JAVA DEFINICIÓN DE EXCEPCIONES EN PROGRAMACIÓN TIPOS DE EXCEPCIONES / ERRORES Y CÓMO TRATARLOS

Qué es Java? Un lenguaje de programación Un entorno de desarrollo Un entorno de aplicación Un entorno de despliegue Es similar en sintaxis de C + +.

Dobles: Es el caso de la instrucción if-else (punto 1.2).

Introducción - por qué usarlas?(1)

GUÍA DE TRABAJO GRADO 11. Articulación SENA Programación de Software Ing. Néstor Raúl Suarez Perpiñan Página 1 de 6

Tema: Grafos en C#. Objetivos Específicos. Materiales y Equipo. Introducción Teórica. Programación IV. Guía 7

T E X T O D E L M A N U A L D E H T M L, W E B M A E S T R O, P O R F R A N C I S C O A R O C E N A

Primer Parcial Septiembre 5 de 2009

Tema1:Controles de Programas estructurados. Entrada y salida de datos ENTRADA Y SALIDA DE DATOS ENTRADA Y SALIDA

TEMA 3:Programación con Clases y Objetos.

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

Transcripción:

CAPÍTULO 8 EXCEPCIONES 2 http://www.itnuevolaredo.edu.mx/takeyas 1

Preguntas detonadoras Cómo se controlan los posibles errores que ocurran durante la ejecución de una aplicación? Un programador, puede disparar sus propias excepciones? Cómo se prepara a una aplicación para que maneje errores? 3 Qué es una excepción? Es un evento que ocurre durante la ejecución de un programa y que interrumpe el flujo normal de operación http://www.itnuevolaredo.edu.mx/takeyas 2

Esperando lo inesperado!! Ocurrencia de sucesos que se consideran excepcionales. Cómo manejar situaciones anómalas Pueden ocurrir durante la ejecución de un programa Control de excepciones Debe ser simple de usar y de entender Debe separar el código del tratamiento de excepciones del código normal Implementar un tratamiento uniforme de las excepciones Permitir que las acciones de recuperación sean programadas http://www.itnuevolaredo.edu.mx/takeyas 3

Tipos de excepciones Implícitas.- Definidas por el lenguaje Tipos de excepciones Explícitas.- Definidas por el programador Excepciones en C# Todas las excepciones derivan de System.Exception http://www.itnuevolaredo.edu.mx/takeyas 4

El espacio de nombres System.Exception Incluido en la librería de clases (BCL) OutOfMemoryException IOException System.Exception NullReferenceException Exception Application.Exception FormatException DivideByZeroException ArithmeticException OverflowException Algunas excepciones Excepción FormatException DivideByZeroException OverflowException OutOfMemoryException Origen (causa del error) El formato de un dato no corresponde con sus especificaciones Cuando se intenta calcular una división por cero (el denominador es cero) Cuando una operación aritmética produce un resultado que está fuera del intervalo de datos permitido. No hay suficiente espacio de memoria para crear un objeto IndexOutOfRangeException Cuando se intenta acceder a una celda de un arreglo cuyo índice está fuera del rango permitido http://www.itnuevolaredo.edu.mx/takeyas 5

Introducción al manejo de excepciones Excepción Manejador de excepción Levantamiento de una excepción Manejo de excepciones en C# C# envía una excepción cuando ocurre un error en el programa y detiene su ejecución. Si se desea que la aplicación siga ejecutándose después del error, entonces se usa: try para poner en alerta al programa sobre el código que puede lanzar una excepción. catch para capturar y manejar cada excepción que se lance. finally código que se ejecutará haya o no excepciones. http://www.itnuevolaredo.edu.mx/takeyas 6

Manejo de excepciones en C# (cont.) try [Bloque de código que puede causar errores] catch [Qué hacer si sucede un error] finally [De cualquier manera, hacer lo siguiente ] No deben declararse variables dentro de un bloque de sentencias try, ya que serían consideradas locales y únicamente dicho bloque podría utilizarlas Qué hacer después de manejar la excepción? Cuando el manejador termina se pueden hacer dos cosas: Reanudar la ejecución del bloque Terminar la ejecución del bloque y devolver el control al punto de invocación. http://www.itnuevolaredo.edu.mx/takeyas 7

Tratamiento de excepciones Tratamiento de excepciones http://www.itnuevolaredo.edu.mx/takeyas 8

Ejemplo sin manejo de excepciones static void Main(string[] args) int a = 5, b = 0, c; c = a / b; Intenta ejecutar una división por cero (b = 0) Console.Write("c=" + a+"/"+b+"="+c); Console.ReadKey(); EJEMPLO SIN MANEJO DE EXCEPCIONES http://www.itnuevolaredo.edu.mx/takeyas 9

DivideByZeroException static void Main(string[] args) int a = 5, b = 0, c; Intenta ejecutar una división por cero (b = 0) try c = a / b; catch (DivideByZeroException x) Console.WriteLine(x.Message); Console.ReadKey(); return; Console.Write("c=" + a+"/"+b+"="+c); Console.ReadKey(); Captura la excepción DivideByZeroException Propiedad con el mensaje de la excepción Mensajes de excepciones http://www.itnuevolaredo.edu.mx/takeyas 10

Ejemplo con manejo de excepciones Ejemplo de división por cero http://www.itnuevolaredo.edu.mx/takeyas 11

Codificación del botón para hacer la división private void button1_click(object sender, EventArgs e) int dividendo=0, divisor=0, resultado=0; try dividendo = int.parse(textbox1.text); divisor = int.parse(textbox2.text); resultado = dividendo / divisor; catch (Exception x) MessageBox.Show("ERROR: "+x.message); finally textbox3.text = resultado.tostring(); Captura cualquier excepción que se dispare Propiedad con el mensaje de la excepción Otro ejemplo para validar la captura de datos int a=0; bool Bandera = true; do Captura cualquier excepción que se dispare Bandera = false; try Console.Write("Capture un número entero: "); a = int.parse(console.readline()); catch (Exception x) Console.WriteLine("ERROR: " + x.message); Console.ReadKey(); Bandera = true; while (Bandera); Propiedad con el mensaje de la excepción http://www.itnuevolaredo.edu.mx/takeyas 12

Ejemplo con try-catch public static void Main(string[] args) int dato1 = 0, dato2 = 0, dato3; System.Console.WriteLine( Se inicia la aplicacion ); try dato1++; dato3 = dato1 / dato2; dato2++; catch (System.DivideByZeroException e) Console.WriteLine( Error: + e.message); dato3 = dato1; //Otras sentencias Console.WriteLine(dato1 + + dato2 + + dato3); CATCH atrapará solamente excepciones de tipo DIVIDEBYZERO EXCEPTION OverflowException Por defecto, NO se verifica el desborde aritmético checked int number = int.maxvalue; Console.WriteLine(++number); OverflowException Dispara una excepción No se ejecuta la impresión. unchecked int number = int.maxvalue; Console.WriteLine(++number); MaxValue + 1 es negativo? -2147483648 http://www.itnuevolaredo.edu.mx/takeyas 13

Ejemplo sin verificación static void Main(string[] args) int x = int.maxvalue; Console.WriteLine("x=" + x); // 2, 147, 483, 647 x++; ERROR: No verifica OverflowException!!! Console.WriteLine("x=" + x); // -2, 147, 483, 648?????? Ejemplo con verificación static void Main(string[] args) int x = int.maxvalue; Console.WriteLine("x=" + x); // 2, 147, 483, 647 try checked Solución: Verificar x++; OverflowException catch(overflowexception) Console.Write( Número demasiado grande!!! ); return; http://www.itnuevolaredo.edu.mx/takeyas 14

Tipos de excepciones Excepciones de sistema: Cuando se realiza alguna operación no válida se lanza automáticamente. Acceso a algún objeto que no existe, división por cero Excepciones de programador: Se define una clase que herede de Throwable o de Exception. Excepciones de usuario: Gestiona la excepción mediante los bloques de código try, catch, finally. Indica que el código producirá una excepción que no se tratará dentro de él y se pasará al método superior utilizando throw. La sentencia throw La instrucción throw se utiliza para señalizar la aparición de una situación anómala (excepción) durante la ejecución del programa. Se puede utilizar una instrucción throw en el bloque catch para volver a producir la excepción, la cual ha sido capturada por la instrucción catch. El programador puede disparar una excepción mediante: throw new Exception( Error:. ); http://www.itnuevolaredo.edu.mx/takeyas 15

Ejemplo de la sentencia throw static void Main(string[] args) int a=3, b=0, c=0; try c = CalcularDivision(a, b); catch (Exception x) Console.WriteLine(x.Message); finally Console.WriteLine(a+"/"+b+"="+c); Console.ReadKey(); Ejemplo de la sentencia throw static int CalcularDivision(int numerador, int denominador) if (denominador == 0) throw new Exception("El denominador NO debe ser cero"); else return (numerador / denominador); http://www.itnuevolaredo.edu.mx/takeyas 16

Ejemplo 1: Excepción general static void Main( ) try System.Console.WriteLine(" Introduce un número: "); int a = System.Convert.ToInt32 (System.Console.ReadLine() ); catch ( Exception e ) System.Console.WriteLine(" Ha habido un error..." + e.message); finally System.Console.WriteLine(" Con error y Sin error, este mensaje aparece. "); System.Console.ReadLine(); Ejemplo 2: Disparar una excepción mediante la sentencia throw using System; class MainClass static void ProcesarCadena(string s) if (s == null) throw new ArgumentNullException(); static void Main() try string s = null; ProcesarCadena(s); catch (Exception e) Console.WriteLine("0 Excepcion capturada.", e); http://www.itnuevolaredo.edu.mx/takeyas 17

Ejemplo 3: Secuencia de sentencias catch static void ProcesarCadena (string s) if (s == null) throw new ArgumentNullException(); static void Main() try string s = null; ProcesarCadena(s); //Mas específico catch (ArgumentNullException e) Console.WriteLine("0 First exception caught.", e); //Menos específico catch (Exception e) Console.WriteLine("0 Second exception caught.", e); Uso de propiedades para validar la captura de datos Capturar datos y validar que se tecleen correctamente. No dejar datos en blanco Rango de valores permitido http://www.itnuevolaredo.edu.mx/takeyas 18

Ejemplo 37 Uso de propiedades para validar la captura de datos (declaración de atributos) class Empleado // Atributos privados private int _intnumero; private string _strnombre; private int _intedad; : : : http://www.itnuevolaredo.edu.mx/takeyas 19

Validar la captura del número del empleado // Propiedad pública del número public int Numero get return _intnumero; set _intnumero = value; if (_intnumero <= 0) throw new Exception("Dato incorrecto para el número"); Validar la captura del nombre del empleado public string Nombre get return _strnombre; set _strnombre = value; if (_strnombre == "") throw new Exception("No debe dejar en blanco el nombre"); foreach (char letra in _strnombre) // Caracteres permitidos switch (letra) case 'Á': continue; case 'É': continue; case 'Í': continue; case 'Ó': continue; case 'Ú': continue; case 'Ñ': continue; case 'Ü': continue; case ' ': continue; if (letra < 'A' letra > 'Z') throw new Exception("Solamente se permiten mayúsculas en el nombre (no capturar números ni otros caracteres)"); http://www.itnuevolaredo.edu.mx/takeyas 20

Validar la captura de la edad del empleado // Propiedad pública de la edad public int Edad get return _intedad; set _intedad = value; if (_intedad < 0 _intedad > 110) throw new Exception("Dato fuera de rango en la edad"); Validar la captura de datos desde el botón private void btncapturar_click(object sender, EventArgs e) Empleado miempleado = new Empleado(); try miempleado.numero = int.parse(txtnumero.text); catch (Exception x) MessageBox.Show(x.Message); txtnumero.text = ""; txtnumero.focus(); return; http://www.itnuevolaredo.edu.mx/takeyas 21

Ejemplo de salida 43 Otros títulos del autor http://www.itnuevolaredo.edu.mx/takeyas/libro takeyas@itnuevolaredo.edu.mx Bruno López Takeyas http://www.itnuevolaredo.edu.mx/takeyas 22