SlideShare una empresa de Scribd logo
TECNOLÓGICO NACIONAL DE MÉXICO
Instituto Tecnológico Superior de Guasave
Ingeniería en Sistemas Computacionales
Programación Orientada a Objetos
Unidad 5: Excepciones
PROGRAMACIÓN ORIENTADA A OBJETOS
Competencia de la unidad:
Comprende y aplica la clasificación de archivos y operaciones
básicas sobre éstos para manipular su información.
PROGRAMACIÓN ORIENTADA A OBJETOS
¿Qué son las Excepciones?
• Ocasionalmente es posible que ciertas instrucciones no funcionen
adecuadamente o se encuentren con problemas de ejecución no
contemplados. C++ proporciona un mecanismo para manejar este tipo
de situaciones o errores en tiempo de ejecución llamado Excepciones.
• El mecanismo de excepciones está basado en las palabras clave: try,
catch y throw.
PROGRAMACIÓN ORIENTADA A OBJETOS
¿Qué son las Excepciones?
• La forma en que trabaja éste mecanismo es que cuando ocurre un
evento o error inesperado C++ busca un segmento de código neutral,
esto es, la sección final del mecanismo, el bloque catch.
• Si todo salió bien y no se presentaron errores, únicamente se ejecutará
el código del bloque try, por lo tanto en éste caso el bloque catch es
completamente ignorado.
PROGRAMACIÓN ORIENTADA A OBJETOS
¿Qué son las Excepciones?
• Es importante señalar que los únicos errores que se pueden controlar
son los producidos en tiempo de ejecución dentro del propio programa,
conocidos como errores síncronos.
• Es imposible controlar errores debido al mal funcionamiento del sistema
por cortes eléctricos, bloqueos de la computadora, etc.
PROGRAMACIÓN ORIENTADA A OBJETOS
• Podemos decir que el programa se prepara para cierta acción, decimos
que "lo intenta". Para ello se especifica un bloque de código cuya
ejecución se va a intentar ("try‐block") utilizando la palabra clave try:
PROGRAMACIÓN ORIENTADA A OBJETOS
• Un ejemplo sencillo sería la operación en la que se dividen dos
números, no puede realizarse una división entre cero por lo que C++
regresa un error crítico que provoca el cierre de la aplicación en caso de
no ser controlado por medio de una excepción.
PROGRAMACIÓN ORIENTADA A OBJETOS
El bloque catch
• Mediante la palabra clave catch especificamos el código encargado de
reaccionar ante una determinada excepción o conjunto de excepciones.
• En C++ es obligatorio que tras un bloque try se incluya al menos un
bloque catch, por lo que la sintaxis anterior quedaría completa de la
siguiente forma:
PROGRAMACIÓN ORIENTADA A OBJETOS
Lanzamiento de una excepción throw()
• Las excepciones no sólo las lanzan las funciones incluidas dentro de las
librerías externas, sino que nosotros podemos querer informar que algo
no ha ido bien dentro de la lógica de nuestro programa, esto se realiza
por medio de la instrucción throw().
PROGRAMACIÓN ORIENTADA A OBJETOS
El sistema tiene un número de excepciones predefinidas, que pueden, a su
vez, ser base para nuevas excepciones definidas por el programador.
• logic_error(str): son, en teoría, predecibles y por lo tanto evitables
mediante chequeos adecuados insertados en lugares estratégicos.
(#include <stdexcept>)
 domain_error(str)
 invalid_argument(str)
 length_error(str)
 out_of_range(str)
PROGRAMACIÓN ORIENTADA A OBJETOS
• runtime_error(str): son errores impredecibles y la única alternativa es
su manejo en tiempo de ejecución. (#include <stdexcept>)
 range_error(str)
 overflow_error(str)
 underflow_error(str)
• bad_alloc(): lanzada en fallo en new (#include <new>)
• bad_cast(): lanzada en fallo en dynamic_cast (#include <typeinfo>)
• bad_typeid(): lanzada en fallo en typeid (#include <typeinfo>)
• bad_exception(): lanzada en fallo en la especificacion de excepciones
lanzadas por una función. (#include <exception>)
PROGRAMACIÓN ORIENTADA A OBJETOS
Excepciones definidas por el lenguaje
• Como ya lo vimos en diapositivas anteriores es posible utilizar las
excepciones que el propio lenguaje C++ proporciona para ciertos
aspectos, como verificar si se produce un error al asignar memoria a un
vector, etc.
PROGRAMACIÓN ORIENTADA A OBJETOS
• Ejemplo: vemos el ejemplo de como validar por medio de excepciones un
programa crea arreglos y les asigna memoria, en este caso utilizamos
punteros debido a que los arreglos se crean de forma dinámica por lo que
se debe asignar un espacio de memoria para cada uno.
• Definición de puntero: Un puntero es una variable que contiene la
dirección de memoria de un dato o de otra variable que contiene al dato en
un arreglo.
PROGRAMACIÓN ORIENTADA A OBJETOS
#include <iostream>
#include <exception>
using namespace std;
class arreglos {
public:
double *ptr[50];
arreglos();
void dinamico();
};
arreglos::arreglos() { }
PROGRAMACIÓN ORIENTADA A OBJETOS
void arreglos::dinamico() {
try {
for (int i= 0 ; i < 50; i++) {
// asignación dinámica de memoria
ptr[i] = new double[50000000];
cout << "Reservando memoria "
<< i << endl;
}
} catch (bad_alloc ex){
cout << "Error: " << ex.what() << endl;
}
}
int main()
{
arreglos arr;
arr.dinamico();
return 0;
}
Ejemplo:
Excepciones lanzadas por el usuario
Ejemplo de como lanzar excepciones: Se lanzará una excepción al momento de
capturar un numero menor o igual a cero.
try {
cout << “capture num: ”;
cin>>num;
fflush(stdin);
if (num <=0) throw invalid_argument(“Numero no valido”);
} catch (invalid_argument e) {
cout << “Error: ” << e.what();
}
PROGRAMACIÓN ORIENTADA A OBJETOS
• Otra forma de lanzar excepciones es disparándolas en una función
independiente, la cual se encarga de evaluar los argumentos necesarios
y determinar si hay o no que lanzar la excepción.
• struct: esta orden se emplea para agrupar variables de tipos
iguales o diferentes en un solo registro, con la misma se
pueden crear estructuras anónimas o estructuras con nombre;
PROGRAMACIÓN ORIENTADA A OBJETOS
Ejemplo de como lanzar una excepción por medio de un método auxiliar
PROGRAMACIÓN ORIENTADA A OBJETOS
//creamos una clase que contenga un struct
class valNum {
public:
struct NUM_NOVALIDO { };
valNum();
valNum(int x);
int num;
};
valNum::valNum(){ // contructor
num=0;
}
// metodo que lanza la excepción en caso de recibir un
// entero menor o igual a cero
valNum::validar(int x) {
if (num <= 0) {
throw NUM_NOVALIDO();
}
}
// capturamos un número entero y se llama la validación
int main() {
valNum v;
try {
cout<<"Número: ";
cin >> v.num;
fflush(stdin);
v.validar(v.num);
} catch ( ... ) {
// evalua cualquier tipo de excepcion recibida
cout << "Error inesperado" << endl;
}
cin.get();
}
Ejercicio:
• Realice un programa utilizando POO, debe capturar un número y
obtener su factorial.
• El factorial de un número (n!) es la multiplicación de los número que
van del 1 a dicho número.
• El programa debe validar desde una función independiente que no se
capturen números menores o iguales a cero, en caso de hacerlo debe
devolver una excepción y mostrar un error en pantalla.
• Debe incluir un menú que permita calcular un número indeterminado
de factoriales.
PROGRAMACIÓN ORIENTADA A OBJETOS
Práctica:
• Realice un programa utilizando POO, debe capturar dos números y
realice la división de ambos.
• Cuando un número es dividió entre cero C++ produce un error, en este
caso debes realizar la división en una función que regresa el resultado,
en caso de recibir un divisor cero debes lanzar una excepción y
regresarla al punto donde llamaste la función y mandar el mensaje a la
pantalla.
PROGRAMACIÓN ORIENTADA A OBJETOS
Proyecto para manejo de excepciones
• Utilizando POO desarrolle un programa que capture un número, y después
pregunte a que raíz se le desea convertir.
• Los números negativos reales tienen la propiedad de que no pueden ser
convertidos a raíces pares.
• Cuando un número negativo sea capturado y se intente convertir a una raíz
par debes lanzar una excepción e indicar en pantalla que no es posible
realizar el cálculo.
• Debes utilizar todos los recursos que C++ te proporciona para lograr validar
y lanzar la excepción.
PROGRAMACIÓN ORIENTADA A OBJETOS

Más contenido relacionado

PDF
Estructuras de datos lineales
PPTX
Estructura de datos: lista, pilas y colas
PPTX
Algoritmos de Dijkstra, Warshall, Ordenación Topológica.
PPTX
Tablas Hash
PPTX
Método de Búsqueda Hash
DOCX
Cuadro comparativo algoritmos de busqueda
PPT
Estructura datos pilas y colas
PPTX
Estructura de datos - Unidad 3 Estructuras Lineales (POO)
Estructuras de datos lineales
Estructura de datos: lista, pilas y colas
Algoritmos de Dijkstra, Warshall, Ordenación Topológica.
Tablas Hash
Método de Búsqueda Hash
Cuadro comparativo algoritmos de busqueda
Estructura datos pilas y colas
Estructura de datos - Unidad 3 Estructuras Lineales (POO)

La actualidad más candente (20)

PDF
Reporte metodos de busqueda y ordenamiento
PPTX
Estructura de datos - Unidad 1: Introducción a las estructuras de datos
PPS
Pilas y colas
DOCX
Metodos de-ordenamiento
PPTX
Programación 3: listas enlazadas
PPTX
Estructura de Datos - Unidad 6 Metodos de busqueda
PPTX
Importancia de la implementación de las listas para la estructura de datos
PPT
PPTX
Programacion orientada a objetos Unidad 1-intro al paradigma poo
PPTX
Simulación - Unidad 2 numeros pseudoaleatorios
PPTX
Eliminar elementos de una cola
PPTX
Búsqueda secuencial y binaria
PPTX
Unidad 5 Programación de dispositivos moviles
PPTX
Fundamentos de BD - Unidad 5 algebra relacional
PDF
Algoritmos de Ordenamiento externo
DOCX
Pilas como estructura de datos..
PPT
Algoritmos de kruskal y prim
PPT
Estructuras de seleccion anidadas
 
PDF
Hacer un grafo de tu facebook a traves de gephi
PPTX
OPERADORES PARA C++
Reporte metodos de busqueda y ordenamiento
Estructura de datos - Unidad 1: Introducción a las estructuras de datos
Pilas y colas
Metodos de-ordenamiento
Programación 3: listas enlazadas
Estructura de Datos - Unidad 6 Metodos de busqueda
Importancia de la implementación de las listas para la estructura de datos
Programacion orientada a objetos Unidad 1-intro al paradigma poo
Simulación - Unidad 2 numeros pseudoaleatorios
Eliminar elementos de una cola
Búsqueda secuencial y binaria
Unidad 5 Programación de dispositivos moviles
Fundamentos de BD - Unidad 5 algebra relacional
Algoritmos de Ordenamiento externo
Pilas como estructura de datos..
Algoritmos de kruskal y prim
Estructuras de seleccion anidadas
 
Hacer un grafo de tu facebook a traves de gephi
OPERADORES PARA C++
Publicidad

Destacado (20)

DOCX
Simulacion - Algoritmo congruencial cuadratico
PPTX
Mercadotecnia Electronica - Tecnologias de integracion
PPTX
Como hacer un Mapa Mental
DOCX
Simulación - Algoritmo de productos medios
PPTX
Estructura de Datos - Estructuras no lineales
DOCX
M2 actividad 2.3 INSTRUMENTACIÓN DIDÁCTICA 2015
DOCX
Tema 4.3.1. Actividad 2: Instrumentos de Evaluación
DOCX
Algorimos básicos para cifrar y descifrar en C# (encriptar y desencriptar)
PPTX
Tópicos Avanzados de Programación - Unidad 5 Programacion movil
DOCX
M4 actividad 4.4.1 INTEGRACIÓN DE LOS INSTRUMENTOS DE EVALUACIÓN AL PROYECTO ...
PPTX
Planificación sobre la reflexión de la luz
PDF
Unidad 2. planeación de un ambiente de aprendizaje
DOCX
10 ejercicios resueltos en cpp
DOCX
00001 b 1 ing.sistemas f j 2014 mata ito-ac-po-004-08 formato int didact...
DOCX
M4 4.3 Actividad 1. Tabla comparativa de instrumentos de evaluacion
DOC
Cuestionario acerca de metodologías ágiles de desarrollo de software
PPTX
M4 4.2 actividad 2 Presentación Asertum - Hexágono de evaluación
PDF
Planeación didáctica química i unidad 1
DOCX
Simulación - Algoritmo lineal
PDF
Simulacion - Algoritmo congruencial cuadratico
Mercadotecnia Electronica - Tecnologias de integracion
Como hacer un Mapa Mental
Simulación - Algoritmo de productos medios
Estructura de Datos - Estructuras no lineales
M2 actividad 2.3 INSTRUMENTACIÓN DIDÁCTICA 2015
Tema 4.3.1. Actividad 2: Instrumentos de Evaluación
Algorimos básicos para cifrar y descifrar en C# (encriptar y desencriptar)
Tópicos Avanzados de Programación - Unidad 5 Programacion movil
M4 actividad 4.4.1 INTEGRACIÓN DE LOS INSTRUMENTOS DE EVALUACIÓN AL PROYECTO ...
Planificación sobre la reflexión de la luz
Unidad 2. planeación de un ambiente de aprendizaje
10 ejercicios resueltos en cpp
00001 b 1 ing.sistemas f j 2014 mata ito-ac-po-004-08 formato int didact...
M4 4.3 Actividad 1. Tabla comparativa de instrumentos de evaluacion
Cuestionario acerca de metodologías ágiles de desarrollo de software
M4 4.2 actividad 2 Presentación Asertum - Hexágono de evaluación
Planeación didáctica química i unidad 1
Simulación - Algoritmo lineal
Publicidad

Similar a Programación Orientada a Objetos - Unidad 5 Excepciones (20)

PPTX
DOCX
Mas sobre excepciones
DOCX
Excepciones en Java
PPTX
Caracteristicas de C Sharp
PDF
Cu00927 c gestion excepciones java try catch finally ejemplos ejercicios
PDF
Guia demanejodeexcepcionesaserciones
PDF
5 Mecanismos Reuntilizacion Abstraccion Final
 
PDF
JAVA ORIENTADO A OBJETOS - EXCEPCIONES
PDF
PPTX
05 Excepciones en Java presentacion.pptx
PPTX
11-Unidad 3: Encapsulamiento y modularidad
PPTX
Clase 5
PDF
Manejo de excepciones en vb
PDF
Java5
PPT
Manejo De Excepciones
PPT
Excepciones
PDF
Jyoc java-cap12 excepciones
PPT
Excepciones
PPT
Excepciones en java
PPT
Excepciones
Mas sobre excepciones
Excepciones en Java
Caracteristicas de C Sharp
Cu00927 c gestion excepciones java try catch finally ejemplos ejercicios
Guia demanejodeexcepcionesaserciones
5 Mecanismos Reuntilizacion Abstraccion Final
 
JAVA ORIENTADO A OBJETOS - EXCEPCIONES
05 Excepciones en Java presentacion.pptx
11-Unidad 3: Encapsulamiento y modularidad
Clase 5
Manejo de excepciones en vb
Java5
Manejo De Excepciones
Excepciones
Jyoc java-cap12 excepciones
Excepciones
Excepciones en java
Excepciones

Más de José Antonio Sandoval Acosta (20)

PPTX
Diapositivas Mejora SIG del Instituto Tecnológico Superior de Guasav
PPTX
Gestión de la Calidad Total (UNIDAD 2) UAIM
PPTX
Taller de ética U1 El sentido de aprender sobre etica.pptx
PPTX
Comunidad Tepeca - Proyecto Final UAIM-Los Mochis
PPTX
Linea del tiempo de la inteligencia artificial.pptx
PPTX
Ing. Mecatronica Prog. Básica, U5 Módulos
PPTX
Ing. Mecatronica Prog. Básica U4 Arreglos y estructuras
PPTX
Ing. Mecatrónica, Prog. Básica U3 control de flujo
PPTX
Ing. Mecatrónica, Prog. Básica, U2 intro a la programacion
PPTX
Ing. Mecatrónica, Prog. Básica U1; Conceptos basicos y algoritmos
PDF
Manual de prácticas y antología para POO
PPTX
Aplicaciones móviles intro.
PPTX
Plantilla presentación.pptx
PPTX
PPTX
Diagrama de Casos de Uso UML
PPTX
Introducción al Diagrama de Clases UML
PPTX
Diagrama de clases UML
PPTX
Diagrama UML Casos de Uso
PDF
Tema 3 - Comandos básicos.pdf
PDF
Tema 1 - Intro.pdf
Diapositivas Mejora SIG del Instituto Tecnológico Superior de Guasav
Gestión de la Calidad Total (UNIDAD 2) UAIM
Taller de ética U1 El sentido de aprender sobre etica.pptx
Comunidad Tepeca - Proyecto Final UAIM-Los Mochis
Linea del tiempo de la inteligencia artificial.pptx
Ing. Mecatronica Prog. Básica, U5 Módulos
Ing. Mecatronica Prog. Básica U4 Arreglos y estructuras
Ing. Mecatrónica, Prog. Básica U3 control de flujo
Ing. Mecatrónica, Prog. Básica, U2 intro a la programacion
Ing. Mecatrónica, Prog. Básica U1; Conceptos basicos y algoritmos
Manual de prácticas y antología para POO
Aplicaciones móviles intro.
Plantilla presentación.pptx
Diagrama de Casos de Uso UML
Introducción al Diagrama de Clases UML
Diagrama de clases UML
Diagrama UML Casos de Uso
Tema 3 - Comandos básicos.pdf
Tema 1 - Intro.pdf

Último (20)

PDF
Informe Comision Investigadora Final distribución electrica años 2024 y 2025
PPTX
Presentacion_Palcoma_Alta energia solar eolica
PDF
LIBRO UNIVERSITARIO SISTEMAS PRODUCTIVOS BN.pdf
PDF
Módulo-de Alcance-proyectos - Definición.pdf
PPTX
clase MICROCONTROLADORES ago-dic 2019.pptx
PDF
prg2_t01_p01_Fundamentos POO - parte1.pdf
PDF
LIBRO UNIVERSITARIO SOFTWARE PARA INGENIERIA BN.pdf
PDF
HISTORIA DE LA GRÚAA LO LARGO DE LOS TIEMPOSpdf
PPTX
CAPACITACIÓN DE USO ADECUADO DE EPP.pptx
PDF
LIBRO UNIVERSITARIO INTELIGENCIA ALGORITMICA BN.pdf
PPT
Sustancias Peligrosas de empresas para su correcto manejo
PDF
Sustitucion_del_maiz_por_harina_integral_de_zapall.pdf
PPTX
Manual ISO9001_2015_IATF_16949_2016.pptx
PDF
LIBRO UNIVERSITARIO DESARROLLO ORGANIZACIONAL BN.pdf
PDF
fulguracion-medicina-legal-418035-downloable-2634665.pdf lesiones por descarg...
PPT
PRIMEROS AUXILIOS EN EL SECTOR EMPRESARIAL
PDF
Primera formulación de cargos de la SEC en contra del CEN
PPTX
Software para la educación instituciones superiores
PPT
tema DISEÑO ORGANIZACIONAL UNIDAD 1 A.ppt
PPTX
OPERACION DE MONTACARGAS maneji seguro de
Informe Comision Investigadora Final distribución electrica años 2024 y 2025
Presentacion_Palcoma_Alta energia solar eolica
LIBRO UNIVERSITARIO SISTEMAS PRODUCTIVOS BN.pdf
Módulo-de Alcance-proyectos - Definición.pdf
clase MICROCONTROLADORES ago-dic 2019.pptx
prg2_t01_p01_Fundamentos POO - parte1.pdf
LIBRO UNIVERSITARIO SOFTWARE PARA INGENIERIA BN.pdf
HISTORIA DE LA GRÚAA LO LARGO DE LOS TIEMPOSpdf
CAPACITACIÓN DE USO ADECUADO DE EPP.pptx
LIBRO UNIVERSITARIO INTELIGENCIA ALGORITMICA BN.pdf
Sustancias Peligrosas de empresas para su correcto manejo
Sustitucion_del_maiz_por_harina_integral_de_zapall.pdf
Manual ISO9001_2015_IATF_16949_2016.pptx
LIBRO UNIVERSITARIO DESARROLLO ORGANIZACIONAL BN.pdf
fulguracion-medicina-legal-418035-downloable-2634665.pdf lesiones por descarg...
PRIMEROS AUXILIOS EN EL SECTOR EMPRESARIAL
Primera formulación de cargos de la SEC en contra del CEN
Software para la educación instituciones superiores
tema DISEÑO ORGANIZACIONAL UNIDAD 1 A.ppt
OPERACION DE MONTACARGAS maneji seguro de

Programación Orientada a Objetos - Unidad 5 Excepciones

  • 1. TECNOLÓGICO NACIONAL DE MÉXICO Instituto Tecnológico Superior de Guasave Ingeniería en Sistemas Computacionales Programación Orientada a Objetos Unidad 5: Excepciones PROGRAMACIÓN ORIENTADA A OBJETOS
  • 2. Competencia de la unidad: Comprende y aplica la clasificación de archivos y operaciones básicas sobre éstos para manipular su información. PROGRAMACIÓN ORIENTADA A OBJETOS
  • 3. ¿Qué son las Excepciones? • Ocasionalmente es posible que ciertas instrucciones no funcionen adecuadamente o se encuentren con problemas de ejecución no contemplados. C++ proporciona un mecanismo para manejar este tipo de situaciones o errores en tiempo de ejecución llamado Excepciones. • El mecanismo de excepciones está basado en las palabras clave: try, catch y throw. PROGRAMACIÓN ORIENTADA A OBJETOS
  • 4. ¿Qué son las Excepciones? • La forma en que trabaja éste mecanismo es que cuando ocurre un evento o error inesperado C++ busca un segmento de código neutral, esto es, la sección final del mecanismo, el bloque catch. • Si todo salió bien y no se presentaron errores, únicamente se ejecutará el código del bloque try, por lo tanto en éste caso el bloque catch es completamente ignorado. PROGRAMACIÓN ORIENTADA A OBJETOS
  • 5. ¿Qué son las Excepciones? • Es importante señalar que los únicos errores que se pueden controlar son los producidos en tiempo de ejecución dentro del propio programa, conocidos como errores síncronos. • Es imposible controlar errores debido al mal funcionamiento del sistema por cortes eléctricos, bloqueos de la computadora, etc. PROGRAMACIÓN ORIENTADA A OBJETOS
  • 6. • Podemos decir que el programa se prepara para cierta acción, decimos que "lo intenta". Para ello se especifica un bloque de código cuya ejecución se va a intentar ("try‐block") utilizando la palabra clave try: PROGRAMACIÓN ORIENTADA A OBJETOS
  • 7. • Un ejemplo sencillo sería la operación en la que se dividen dos números, no puede realizarse una división entre cero por lo que C++ regresa un error crítico que provoca el cierre de la aplicación en caso de no ser controlado por medio de una excepción. PROGRAMACIÓN ORIENTADA A OBJETOS
  • 8. El bloque catch • Mediante la palabra clave catch especificamos el código encargado de reaccionar ante una determinada excepción o conjunto de excepciones. • En C++ es obligatorio que tras un bloque try se incluya al menos un bloque catch, por lo que la sintaxis anterior quedaría completa de la siguiente forma: PROGRAMACIÓN ORIENTADA A OBJETOS
  • 9. Lanzamiento de una excepción throw() • Las excepciones no sólo las lanzan las funciones incluidas dentro de las librerías externas, sino que nosotros podemos querer informar que algo no ha ido bien dentro de la lógica de nuestro programa, esto se realiza por medio de la instrucción throw(). PROGRAMACIÓN ORIENTADA A OBJETOS
  • 10. El sistema tiene un número de excepciones predefinidas, que pueden, a su vez, ser base para nuevas excepciones definidas por el programador. • logic_error(str): son, en teoría, predecibles y por lo tanto evitables mediante chequeos adecuados insertados en lugares estratégicos. (#include <stdexcept>)  domain_error(str)  invalid_argument(str)  length_error(str)  out_of_range(str) PROGRAMACIÓN ORIENTADA A OBJETOS
  • 11. • runtime_error(str): son errores impredecibles y la única alternativa es su manejo en tiempo de ejecución. (#include <stdexcept>)  range_error(str)  overflow_error(str)  underflow_error(str) • bad_alloc(): lanzada en fallo en new (#include <new>) • bad_cast(): lanzada en fallo en dynamic_cast (#include <typeinfo>) • bad_typeid(): lanzada en fallo en typeid (#include <typeinfo>) • bad_exception(): lanzada en fallo en la especificacion de excepciones lanzadas por una función. (#include <exception>) PROGRAMACIÓN ORIENTADA A OBJETOS
  • 12. Excepciones definidas por el lenguaje • Como ya lo vimos en diapositivas anteriores es posible utilizar las excepciones que el propio lenguaje C++ proporciona para ciertos aspectos, como verificar si se produce un error al asignar memoria a un vector, etc. PROGRAMACIÓN ORIENTADA A OBJETOS
  • 13. • Ejemplo: vemos el ejemplo de como validar por medio de excepciones un programa crea arreglos y les asigna memoria, en este caso utilizamos punteros debido a que los arreglos se crean de forma dinámica por lo que se debe asignar un espacio de memoria para cada uno. • Definición de puntero: Un puntero es una variable que contiene la dirección de memoria de un dato o de otra variable que contiene al dato en un arreglo. PROGRAMACIÓN ORIENTADA A OBJETOS
  • 14. #include <iostream> #include <exception> using namespace std; class arreglos { public: double *ptr[50]; arreglos(); void dinamico(); }; arreglos::arreglos() { } PROGRAMACIÓN ORIENTADA A OBJETOS void arreglos::dinamico() { try { for (int i= 0 ; i < 50; i++) { // asignación dinámica de memoria ptr[i] = new double[50000000]; cout << "Reservando memoria " << i << endl; } } catch (bad_alloc ex){ cout << "Error: " << ex.what() << endl; } } int main() { arreglos arr; arr.dinamico(); return 0; } Ejemplo:
  • 15. Excepciones lanzadas por el usuario Ejemplo de como lanzar excepciones: Se lanzará una excepción al momento de capturar un numero menor o igual a cero. try { cout << “capture num: ”; cin>>num; fflush(stdin); if (num <=0) throw invalid_argument(“Numero no valido”); } catch (invalid_argument e) { cout << “Error: ” << e.what(); } PROGRAMACIÓN ORIENTADA A OBJETOS
  • 16. • Otra forma de lanzar excepciones es disparándolas en una función independiente, la cual se encarga de evaluar los argumentos necesarios y determinar si hay o no que lanzar la excepción. • struct: esta orden se emplea para agrupar variables de tipos iguales o diferentes en un solo registro, con la misma se pueden crear estructuras anónimas o estructuras con nombre; PROGRAMACIÓN ORIENTADA A OBJETOS
  • 17. Ejemplo de como lanzar una excepción por medio de un método auxiliar PROGRAMACIÓN ORIENTADA A OBJETOS //creamos una clase que contenga un struct class valNum { public: struct NUM_NOVALIDO { }; valNum(); valNum(int x); int num; }; valNum::valNum(){ // contructor num=0; } // metodo que lanza la excepción en caso de recibir un // entero menor o igual a cero valNum::validar(int x) { if (num <= 0) { throw NUM_NOVALIDO(); } } // capturamos un número entero y se llama la validación int main() { valNum v; try { cout<<"Número: "; cin >> v.num; fflush(stdin); v.validar(v.num); } catch ( ... ) { // evalua cualquier tipo de excepcion recibida cout << "Error inesperado" << endl; } cin.get(); }
  • 18. Ejercicio: • Realice un programa utilizando POO, debe capturar un número y obtener su factorial. • El factorial de un número (n!) es la multiplicación de los número que van del 1 a dicho número. • El programa debe validar desde una función independiente que no se capturen números menores o iguales a cero, en caso de hacerlo debe devolver una excepción y mostrar un error en pantalla. • Debe incluir un menú que permita calcular un número indeterminado de factoriales. PROGRAMACIÓN ORIENTADA A OBJETOS
  • 19. Práctica: • Realice un programa utilizando POO, debe capturar dos números y realice la división de ambos. • Cuando un número es dividió entre cero C++ produce un error, en este caso debes realizar la división en una función que regresa el resultado, en caso de recibir un divisor cero debes lanzar una excepción y regresarla al punto donde llamaste la función y mandar el mensaje a la pantalla. PROGRAMACIÓN ORIENTADA A OBJETOS
  • 20. Proyecto para manejo de excepciones • Utilizando POO desarrolle un programa que capture un número, y después pregunte a que raíz se le desea convertir. • Los números negativos reales tienen la propiedad de que no pueden ser convertidos a raíces pares. • Cuando un número negativo sea capturado y se intente convertir a una raíz par debes lanzar una excepción e indicar en pantalla que no es posible realizar el cálculo. • Debes utilizar todos los recursos que C++ te proporciona para lograr validar y lanzar la excepción. PROGRAMACIÓN ORIENTADA A OBJETOS