Manejo de excepciones Escuela de Ingeniería de Sistemas y Computación Universidad del Valle INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS (IPOO)

Slides:



Advertisements
Presentaciones similares
MANEJO DE EXCEPCIONES EN C++
Advertisements

Capitulo 4 Excepciones.
Informática II Prof. Dr. Gustavo Patiño MJ
Informática II 1 Diego Fernando Serna RestrepoSemestre 2011/2.
UNIVERSIDAD LATINA (UNILA)
INSTITUTO TECNOLOGICO DE TEHUACAN Ingeniería en sistemas computacionales Curso de apoyo a la titulación EXCEPCIONES EN JAVA Diciembre de 2008.
Manejo de Excepciones Agustín J. González ELO329.
Computación II Unidad X Manejo de Excepciones. Presentación de la Unidad Objetivos: –Saber manejar situaciones inesperadas dentro de un programa –Comprender.
Programación orientada a objetos Capítulo 12 Manejo de errores.
Control de errores visual basic
ELO3291 Manejo de Excepciones Lectura sugerida de texto en linea: Eckel, Bruce. Thinking About C++, 2nd Edition, Prentice-Hall, Gratis en
Programación orientada a objetos Capítulo 12 Manejo de errores.
Tratamiento de excepciones
ELO3291 Manejo de Excepciones Agustín J. González ELO329.
MANEJO DE EXCEPCIONES. 21/11/2005 E.T.S de Ingenieros de Telecomunicacion.2 Índice ¿Qué es una excepción? Tipos de situaciones. Manejo de excepciones.
¿Qué son? – tipos – manejo - ejemplos
Ada 2º Parte (variables, ámbitos, subrutinas, tipos abstractos de datos y excepciones)
Desarrollador Profesional de Juegos Programación III Unidad I Capturar Excepciones.
Desarrollador Profesional de Juegos Programación III Unidad I Excepciones Tipos.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Objetos.
Lenguaje de programación: Lua Fundamentos de lenguaje de programación. Iván Cardemil Patricio Tudela Camilo Rojas Llosect Moscoso.
Como “atraparlos” Manejo de Errores en.NET. Introducción Por mas esfuerzo que pongamos, nuestros programas siempre son susceptibles a errores. Incluso,
PROGRAMACIÓN ORIENTADA A OBJETOS SEGUNDA UNIDAD: “CLASES, OBJETOS Y MÉTODOS” IRVING YAIR SALAS CHÁVEZ ING. EN SISTEMAS COMPUTACIONALES - ITSLP.
Manejo de Excepciones Agustín J. González ELO329 ELO329.
Clases y Objetos.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
Anexo Chame-San Carlos
AYUDANTÍA 6 Más sobre... ¿Faiton?.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
Definición y Conversión de datos
Diseño y Programación Orientada a Objetos
LISTAS..
Funciones y Clases Amigas (Friend)‏ Miembros Estáticos (Static)
¿Qué es un OPERADOR? “Un operador es un elemento de programa que se aplica a uno o varios operandos en una expresión o instrucción. Los operadores que.
Programación orientada a objetos
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
Manejo de Excepciones Agustín J. González ELO329.
Sonia Rueda Herencia y Polimorfismo
Instrucciones y excepciones
Programación orientada a objetos
Programación Orientada Objetos
Manejo de Excepciones Agustín J. González ELO329.
LÓGICA DE PROGRAMACIÓN
Unidad 3. Introducción a la programación
Plantillas (Templates)‏
Algunas Características de C++ no presentes en C
Manejo de Excepciones Agustín J. González ELO329.
Manejo de Excepciones Agustín J. González ELO329.
Manejo de Punteros y objetos en memoria dinámica en C++
HERRAMIENTAS DE PROGRAMACIÓN
Introducción al Visual Basic  Un programa en sentido informático está constituido en un sentido general por variables que contienen los datos con los.
Try Catch Integrantes del equipo Correa Tadeo Jose Humberto
Informática Ingeniería en Electrónica y Automática Industrial
Algunas Características de C++ no presentes en C
Informática Ingeniería en Electrónica y Automática Industrial
Manejo de Excepciones Agustín J. González ELO329 ELO329.
Programación Orientada a Objetos
Manejo de Punteros y objetos en memoria dinámica en C++
Manejo de excepciones en Java
Manejo de Excepciones en C++
Programación Modular Programación de Computadoras - Hugo Vega Grupo2: Reina Rodríguez Miriam Salluca.
Manejo de Excepciones en C++
Funciones y Clases Amigas (Friend)‏ Miembros Estáticos (Static)
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
Funciones y Clases Amigas (Friend)‏ Miembros Estáticos (Static)
Programación Orientada a Objetos
Algunas Características de C++ no presentes en C
Templates (en español: Pantillas, modelos, patrones)‏
UNIDAD II Generalidades sobre Algoritmos
Manejo de Excepciones y otros
Transcripción de la presentación:

Manejo de excepciones Escuela de Ingeniería de Sistemas y Computación Universidad del Valle INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS (IPOO)

2 Excepciones Son anomalias (condiciones de error no esperadas) producidas durante la ejecución del programa. Debido a: División por cero, desbordamientos positivos o negativos, argumentos fuera de dominio,indice de array fuera de rango etc Cuando un programa detecta una excepcion, se notifica al resto del sistema o lanzando (throwing) una excepción. En alguna parte del programa existe un código que maneja o captura (catch) la excepcion. C++ puede levantar directamente una excepción en un bloque try utilizando la expresión throw.

3 Los manejadores de excepciones se evalúan en el orden en que se encuentran. Una excepción se captura cuando su tipo coincide con el tipo de la sentencia catch. Una vez que existe correspondencia de tipos, el control del programa se transfiere al manejador. El manejador especifica que acciones se realizaran para tratar la anomalia del programa. Excepciones

4 AGB Excepciones Usan tres palabras clave: try // Bloque donde pueden lanzarse excepciones. { // etc. throw dato; // Lanza una excepción con un dato. / etc. // Dato es cualquier tipo de dato (clase o primitivo) } catch(Dato dato) // Captura las excepciones que hayan { // ocurrido dentro del bloque try. // etc. }

5 La excepción se debe lanzar (throw) en el caso de que haya una situación anómala, imposible de corregir en ese nivel del código. Las excepciones se pueden lanzar (throw) dentro del bloque try o de cualquier función que se ejecute dentro del bloque try en cualquier nivel de profundidad. Puede haber bloques try anidados. Lo que no capture el interno, lo deja para el externo. O en el catch() del interno se pueden lanzar nuevas excepciones para que las capture el externo. Excepciones

6 Al lanzar una excepción (throw) se debe pasar un parámetro adicional (por valor, por referencia, por puntero, por referencia constante o por puntero a una constante). Y entonces el catch() recibe ese parámetro. Puede haber varios bloques catch() sobrecargados, es decir, cada uno capturando un tipo distinto de dato lanzado con throw. Puede haber, al final de todos, un catch(...). Los tres puntos significan que capturan cualquier otro dato no especificado en los catch() anteriores. Excepciones

7 Lo mas sencillo y eficiente es capturar las excepciones por referencia. Así nos evitamos duplicar objetos en memoria. Además, el manejo de memoria (creación y destrucción del objeto lanzado) se hace automáticamente. try { throw dato; // Se lanza el dato } catch(Dato &dato) // Se captura el dato por referencia { } Excepciones

8 Dentro de un catch(), la excepción se puede relanzar con el mismo parámetro que traía. Para ello hay que poner throw; sin ningún parámetro. La función que lanza excepciones puede declararse opcionalmente con un filtro de tipo de datos para el throw. De este modo, la función se compromete a lanzar únicamente tipos de datos especificados en el filtro. Si el throw lanza otro tipo de dato no incluido en el filtro, el resultado es indefinido. Excepciones

9 Hay unas cuantas clases que mantienen excepciones predefinidas del sistema: exception /* agrupa todos los errores */ logic_error /* errores que se podrían haber detectado antes de la ejecución del programa */ domain_error invalid_argument lenght_error out_of_range bad_cast bad_typeid runtime_error /* errores que solo pueden detectarse durante la ejecución del programa */ range_error overflow_error bad_alloc Excepciones

10 Excepciones Al lanzar una excepción, todos los objetos construidos automáticamente en ese ámbito se destruyen (los objetos dinámicos no se destruyen). Si se detecta un error en un constructor, es conveniente lanzar una excepción, ya que es la única manera de advertir que el objeto no fue correctamente construido. Ojo: en ese caso no se llama a su destructor. Es mala idea lanzar excepciones desde destructores.

11 También se puede intentar recuperarse de una excepción: bool correcto = true; do { try { correcto = true; // etc. Aquí puede haber un throw } catch(...) { // Aquí se corrigen las condiciones que produjeron la excepción correcto = false; } } while(!correcto); Excepciones