SlideShare una empresa de Scribd logo
1 de 22
Descargar para leer sin conexión
Algoritmos y Programación




                        Manejo de
                       Excepciones



                                     www.unaj.edu.ar
Algoritmos y Programación




                  Temario
                 • Manejo de Excepciones
                     – ¿Qué es un excepción?
                     – ¿Qué hay que investigar del lenguaje cuando tiene
                       manejo de excepciones?
                     – Excepciones en Python




                                                                    www.unaj.edu.ar
Algoritmos y Programación




              ¿Qué es un excepción?




                                      www.unaj.edu.ar
Algoritmos y Programación


                  ¿Qué es una excepción?

      • Una excepción es un acontecimiento, que ocurre
        durante la ejecución de un programa, que
        interrumpe el flujo normal de las instrucciones de
        programa.
          – Ejemplo de excepciones:
              •Abrir un archivo que no existe.
              •Acceder en una lista a un valor que no existe.
              •Invocar a un método que no existe.
              •Referirse a una variable que no existe.
              •Mezclar tipos de datos sin convertirlos previamente.
              •Etc.

                                                                      www.unaj.edu.ar
Algoritmos y Programación

                  Ejemplo de excepciones “sin manejar o
                  gestionar”


                                     Ej. de excepción por tratar de
                                     acceder a un indice no
                                     existente de la lista.
                                     IndexError: nombre de la
                                     excepción levantada
                                      Ej. de excepción por variable
                                      no definida. NameError:
                                      nombre de la excepción
                                      levantada.
                                                 Ej. de excepción por
                                                 no existir un
                                                 archivo. IOError:
                                                 nombre de la
                                                 excepción levantada.
                                                             www.unaj.edu.ar
Algoritmos y Programación

                  Ejemplo de excepciones no manejadas y manejadas
                  por el programador




                                              Salida con manejo de
                                               excepciones por el
                                            programador. SIN ERROR!
                            Constructor
                            para manejo   “Crea un nuevo elemento en la
                            excepciones               lista”




                                                                  www.unaj.edu.ar
Algoritmos y Programación

                   ¿El lenguaje tiene algún no manejadas y manejar
                   Ejemplo de excepciones mecanismo para manejadas
                  las el programador
                  por excepciones?




     – Existen lenguajes que no presentan mecanísmos
       exclusivo para manejo de excepciones. En esos
       casos podrían tratar de simular el manejo de las
       excepciones con otros recursos. Ej. Pascal

     – Los lenguajes que tienen manejo de excepciones
       lo trabajan con las estructuras definidas para ello. Ej.
       Python, Ada, Java, etc.


                                                           www.unaj.edu.ar
Algoritmos y Programación




        ¿Qué hay que investigar del
           lenguaje cuando tiene
          manejo de excepciones?



                                  www.unaj.edu.ar
Algoritmos y Programación




     – ¿Qué acción se toma después de levantada y
       manejada una excepción. Se continúa con la
       ejecución de la unidad que lo provocó o se termina?
     – ¿Cuál es su ámbito?
     – ¿Cómo se alcanza una excepción?
     – ¿Cómo especificar la unidades (manejadores de
       excepciones) que se han de ejecutar cuando se
       alcanza las excepciones?
     – ¿Qué sucede cuando no se encuentra un manejador
       para una excepción levantada?
     – ¿El lenguaje tiene excepciones predefinidas?

                                                    www.unaj.edu.ar
Algoritmos y Programación




             Excepciones en Python




                                     www.unaj.edu.ar
Algoritmos y Programación
                           Excepciones en Phyton
 La estructura que presenta Python para manejo
de excepciones es la siguiente:
 Un conjunto de              try:
 excepciones pueden ser             sentencia 1
 manejadas por un mismo             ....
 manejador. En ese caso
 se puede colocar:                  sentencia n
                             except nombre de la excepción 1:
 except
                                    sentencias
 (exp1,exp2,..):
                             ..
 Puede aparecer un except
 SIN nombre de               except nombre de la excepción n:
 excepción, pero SOLO al            sentencias
 final. Actúa como comodín    else:
 except:                             sentencias
                              finally:
            Opcional
                                     sentencias
                                                          www.unaj.edu.ar
Algoritmos y Programación


                            Cláusulas else y finally

          else:
          • El código colocado en la cláusula else se
          ejecuta solo si no se levante una excepción


          finally:
          • El código colocado en la cláusula finally se
          ejecuta siempre se haya o no levantado una
          excepción

                                                      www.unaj.edu.ar
Algoritmos y Programación


                                        Ejemplo con else
                                                   Cláusula opcional, que se ejecuta
                                                   SOLO si NO se levanta excepción
                                                   en el bloque try except
                     Se levanta la excepción..




                                                  NO se ejecuta el bloque else

                  NO se levanta la excepción..




                                                  SI se ejecuta el bloque else

                                                                             www.unaj.edu.ar
Algoritmos y Programación


                                  Ejemplo con finally
                                               Cláusula opcional, pero que
                                               permite que se ejecute una serie
                                               de sentencias SIEMPRE, ya sea
                                               que el proceso haya o no
                                               terminado bien

                                       NO se levanta la excepción..




      SI levanta la excepción..               SE ejecuta el bloque finally




                                          SE ejecuta el bloque finally
                                                                      www.unaj.edu.ar
Algoritmos y Programación

                  ¿Qué sucede cuando una excepción no encuentra
                  un manejador en su bloque “try except”?




                                                              Operación que
                                                              levantará una
                                                              excepción del tipo
                                                              NameError, “variable
                                                              no definida”



                            NO SE ENCUENTRA EL MANEJADOR para
                            esa excepción. ¿Cuál es la acción que se
                            toma?
                                                                           www.unaj.edu.ar
Algoritmos y Programación


                            Busca estáticamente:
  – Analiza si ese try está contenido dentro de otro y si
    ese otro tiene un manejador para esa excepción..
                                    Se produce un error del
                                    tipo: NameError,
                                    “variable no definida”,
                                    que NO es manejada
                                    por el bloque try except
                                    interno.    Se termina ese
                                                bloque interno y se
                                    SI es manejada por el
                                                busca un manejador
                                    bloque try except que lo más
                                                en un bloque
                                    contiene… externo.

                                               Ejecuta el
                                               manejador del
                                               bloque que lo
                                               contiene.
                                                           www.unaj.edu.ar
Algoritmos y Programación

                        Sino va a buscar a quién lo llamó:
            Ej.: Uso de una función definida en el Modulo “modulo1”


                                              Módulo que contiene la
                                              función “elemento” .
                                              Solo maneja la
                                              excepción NameError “
                                                  Código que:
                                                  -Importa el modulo1
                                                  -Invoca a unas de sus
                                                  funciones y
                                                  -Maneja la excepción
                                                  IndexError

                                                El error se levantó en la
                                                func “elemento” y no se
                                                manejó allí
                                                                 www.unaj.edu.ar
Algoritmos y Programación

                      Si no se encuentra un manejador :
– Es una excepción no manejada, y la ejecución se frena con
  un mensaje como los mostrados antes
                                           El módulo que contiene
                                           la función “elemento”
                                           solo maneja la
                                           excepción NameError
                                           y el código que la
                                           invoca solo maneja la
                                           excepción IOError, NO
                                           hay manejador para
                                           IndexError

                                               Se corta el
                                               proceso y larga el
                                               mensaje standard
                                               de error

                                                        www.unaj.edu.ar
Algoritmos y Programación


           Levantando excepciones explícitamente
          con “raise”



                             El programador controla que exista
                             el índice y en caso contrario
                             explícitamente levanta la
                             excepción con la sentencia raise




                                                          www.unaj.edu.ar
Algoritmos y Programación

             Algunas de excepciones predefinidas


  – ZeroDivisionError (ArithmeticError): Lanzada cuando el segundo
    argumento de una operación de división o módulo, era 0.
  – EOFError (StandardError): Se intentó leer más allá del final de
    fichero.
  – IOError (EnvironmentError): Error en una operación de
    entrada/salida..
  – ImportError (StandardError): No se encuentra el módulo o el
    elemento del módulo que se quería importar.
  – IndexError (LookupError): El índice de la secuencia está fuera del
    rango posible.
  – KeyError (LookupError): La clave no existe.
  – MemoryError (StandardError): Memoria disponible insuficiente.


                                                                  www.unaj.edu.ar
Algoritmos y Programación

             Algunas de excepciones predefinidas
  – NameError (StandardError): No se encontró ningún elemento con ese
    nombre. Suele lanzarse cuando se usan varibles no declaradas (se
    puede deber a errores de tipeo).
  – RuntimeError (StandardError): Error en tiempo de ejecución no
    especificado.
  – NotImplementedError (RuntimeError): Ese método o función no está
    implementado.
  – SyntaxError (StandardError): Clase padre para los errores
    sintácticos.
  – IndentationError (SyntaxError): Error en la indentación del archivo.
  – TypeError (StandardError): Tipo de argumento no apropiado.
  – ValueError (StandardError): Valor del argumento no apropiado.
  – Etc.


                                                                www.unaj.edu.ar
Algoritmos y Programación

            Excepciones definidas por el usuario
  – En Python se pueden definir excepciones propias, esto se logra
    creando una clase que herede de Exception




                                           Explícitamente debemos
                                           levantar nuestra excepción con la
                                           sentencia raise




                                                                    www.unaj.edu.ar

Más contenido relacionado

La actualidad más candente

Lenguaje c diapositivas
Lenguaje c diapositivasLenguaje c diapositivas
Lenguaje c diapositivasstarduslex
 
Metricas
MetricasMetricas
MetricasCECY50
 
Conceptos Unidad 1 Lenguajes Automatas Introducción a la Teoría de Lenguaje...
Conceptos Unidad 1 Lenguajes Automatas Introducción  a  la Teoría de Lenguaje...Conceptos Unidad 1 Lenguajes Automatas Introducción  a  la Teoría de Lenguaje...
Conceptos Unidad 1 Lenguajes Automatas Introducción a la Teoría de Lenguaje...Hugo Alberto Rivera Diaz
 
Estructura de Lenguaje C++
Estructura de Lenguaje C++Estructura de Lenguaje C++
Estructura de Lenguaje C++Nana Garces
 
Metricas de proceso y proyecto
Metricas de proceso y proyectoMetricas de proceso y proyecto
Metricas de proceso y proyectoEdison Tobar
 
Presentacion Sql 2
Presentacion Sql 2Presentacion Sql 2
Presentacion Sql 2Martink137
 
algoritmos y fundamentos de programacion
algoritmos y fundamentos de programacionalgoritmos y fundamentos de programacion
algoritmos y fundamentos de programacionMIKE_INK_RM
 
Calidad del producto ISO 9126
Calidad del producto ISO 9126Calidad del producto ISO 9126
Calidad del producto ISO 9126JekittaB
 
Desigualdades lineales
Desigualdades linealesDesigualdades lineales
Desigualdades linealesEEGC2
 
Estudio Complejidad de algoritmos
Estudio Complejidad de algoritmosEstudio Complejidad de algoritmos
Estudio Complejidad de algoritmosPablo Pavez
 
Topicos Avanzados de Programacion - Unidad 3 componentes y librerias
Topicos Avanzados de Programacion - Unidad 3 componentes y libreriasTopicos Avanzados de Programacion - Unidad 3 componentes y librerias
Topicos Avanzados de Programacion - Unidad 3 componentes y libreriasJosé Antonio Sandoval Acosta
 
Introducción a los Métodos Numéricos
Introducción a los Métodos NuméricosIntroducción a los Métodos Numéricos
Introducción a los Métodos NuméricosBrianith Navarro
 
Procedimiento Para Utilizar Flex Y Bison
Procedimiento Para Utilizar Flex Y Bison Procedimiento Para Utilizar Flex Y Bison
Procedimiento Para Utilizar Flex Y Bison Raul Hernandez Mayo
 

La actualidad más candente (20)

Lenguaje c diapositivas
Lenguaje c diapositivasLenguaje c diapositivas
Lenguaje c diapositivas
 
Metricas
MetricasMetricas
Metricas
 
Expresiones regulares y gramaticas
Expresiones regulares y gramaticasExpresiones regulares y gramaticas
Expresiones regulares y gramaticas
 
Conceptos Unidad 1 Lenguajes Automatas Introducción a la Teoría de Lenguaje...
Conceptos Unidad 1 Lenguajes Automatas Introducción  a  la Teoría de Lenguaje...Conceptos Unidad 1 Lenguajes Automatas Introducción  a  la Teoría de Lenguaje...
Conceptos Unidad 1 Lenguajes Automatas Introducción a la Teoría de Lenguaje...
 
Estructura de Lenguaje C++
Estructura de Lenguaje C++Estructura de Lenguaje C++
Estructura de Lenguaje C++
 
Metricas de proceso y proyecto
Metricas de proceso y proyectoMetricas de proceso y proyecto
Metricas de proceso y proyecto
 
Presentacion Sql 2
Presentacion Sql 2Presentacion Sql 2
Presentacion Sql 2
 
algoritmos y fundamentos de programacion
algoritmos y fundamentos de programacionalgoritmos y fundamentos de programacion
algoritmos y fundamentos de programacion
 
Tutorial de JFLAP
Tutorial de JFLAPTutorial de JFLAP
Tutorial de JFLAP
 
macros Lenguaje ensamblador
macros Lenguaje ensambladormacros Lenguaje ensamblador
macros Lenguaje ensamblador
 
Métricas
MétricasMétricas
Métricas
 
Calidad del producto ISO 9126
Calidad del producto ISO 9126Calidad del producto ISO 9126
Calidad del producto ISO 9126
 
Desigualdades lineales
Desigualdades linealesDesigualdades lineales
Desigualdades lineales
 
Estudio Complejidad de algoritmos
Estudio Complejidad de algoritmosEstudio Complejidad de algoritmos
Estudio Complejidad de algoritmos
 
Topicos Avanzados de Programacion - Unidad 3 componentes y librerias
Topicos Avanzados de Programacion - Unidad 3 componentes y libreriasTopicos Avanzados de Programacion - Unidad 3 componentes y librerias
Topicos Avanzados de Programacion - Unidad 3 componentes y librerias
 
Introducción a los Métodos Numéricos
Introducción a los Métodos NuméricosIntroducción a los Métodos Numéricos
Introducción a los Métodos Numéricos
 
Modelo Requistos
Modelo RequistosModelo Requistos
Modelo Requistos
 
Procedimiento Para Utilizar Flex Y Bison
Procedimiento Para Utilizar Flex Y Bison Procedimiento Para Utilizar Flex Y Bison
Procedimiento Para Utilizar Flex Y Bison
 
Tipos de listas en estructura de datos
Tipos de listas en estructura de datosTipos de listas en estructura de datos
Tipos de listas en estructura de datos
 
Sintaxis del lenguaje c++
Sintaxis del lenguaje c++Sintaxis del lenguaje c++
Sintaxis del lenguaje c++
 

Destacado

PROBLEMAS DE ALGORTMO DE INFORMATICA 1
PROBLEMAS DE ALGORTMO DE INFORMATICA 1PROBLEMAS DE ALGORTMO DE INFORMATICA 1
PROBLEMAS DE ALGORTMO DE INFORMATICA 1guaadaaluupee
 
Uso de operadores
Uso de operadoresUso de operadores
Uso de operadoresleyohana14
 
Excepciones
ExcepcionesExcepciones
Excepcionesrilara
 
Java exceptions
Java exceptionsJava exceptions
Java exceptionsDeli_amor
 
Curso Java Inicial 7 Excepciones
Curso Java Inicial   7 ExcepcionesCurso Java Inicial   7 Excepciones
Curso Java Inicial 7 ExcepcionesEmilio Aviles Avila
 
Tema 10 excepciones
Tema 10 excepcionesTema 10 excepciones
Tema 10 excepcionesjbersosa
 
Exceptions (2)
Exceptions (2)Exceptions (2)
Exceptions (2)jbersosa
 
J2EE Struts with Hibernate Framework
J2EE Struts with Hibernate FrameworkJ2EE Struts with Hibernate Framework
J2EE Struts with Hibernate Frameworkmparth
 
5. Curso Java Struts I (Framework para Java) - Curso 2005-2006
5. Curso Java Struts I (Framework para Java) - Curso 2005-20065. Curso Java Struts I (Framework para Java) - Curso 2005-2006
5. Curso Java Struts I (Framework para Java) - Curso 2005-2006Samuel Marrero
 
excepciones_java en www.fiec.espol.edu.ec
excepciones_java  en www.fiec.espol.edu.ecexcepciones_java  en www.fiec.espol.edu.ec
excepciones_java en www.fiec.espol.edu.ecSilvana Vargas
 
4. Curso Java JSP (Java Server Pages) - Curso 2005-2006
4. Curso Java JSP (Java Server Pages) - Curso 2005-20064. Curso Java JSP (Java Server Pages) - Curso 2005-2006
4. Curso Java JSP (Java Server Pages) - Curso 2005-2006Samuel Marrero
 
2. Java Servlets (J2EE) - Curso 2005-2006
2. Java Servlets (J2EE) - Curso 2005-20062. Java Servlets (J2EE) - Curso 2005-2006
2. Java Servlets (J2EE) - Curso 2005-2006Samuel Marrero
 

Destacado (20)

PROBLEMAS DE ALGORTMO DE INFORMATICA 1
PROBLEMAS DE ALGORTMO DE INFORMATICA 1PROBLEMAS DE ALGORTMO DE INFORMATICA 1
PROBLEMAS DE ALGORTMO DE INFORMATICA 1
 
Uso de operadores
Uso de operadoresUso de operadores
Uso de operadores
 
Excepciones
ExcepcionesExcepciones
Excepciones
 
Excepciones en java
Excepciones en javaExcepciones en java
Excepciones en java
 
Unidad 5: Excepciones Ejercicio 1
Unidad 5: Excepciones Ejercicio 1Unidad 5: Excepciones Ejercicio 1
Unidad 5: Excepciones Ejercicio 1
 
Java exceptions
Java exceptionsJava exceptions
Java exceptions
 
Curso Java Inicial 7 Excepciones
Curso Java Inicial   7 ExcepcionesCurso Java Inicial   7 Excepciones
Curso Java Inicial 7 Excepciones
 
Gestion de errores en java
Gestion de errores en javaGestion de errores en java
Gestion de errores en java
 
Tema 10 excepciones
Tema 10 excepcionesTema 10 excepciones
Tema 10 excepciones
 
Unidad 5: Excepciones Ejercicio 2
Unidad 5: Excepciones Ejercicio 2Unidad 5: Excepciones Ejercicio 2
Unidad 5: Excepciones Ejercicio 2
 
Exceptions (2)
Exceptions (2)Exceptions (2)
Exceptions (2)
 
Unidad 6: Flujos y Archivos Ejercicio 4
Unidad 6: Flujos y Archivos Ejercicio 4Unidad 6: Flujos y Archivos Ejercicio 4
Unidad 6: Flujos y Archivos Ejercicio 4
 
J2EE Struts with Hibernate Framework
J2EE Struts with Hibernate FrameworkJ2EE Struts with Hibernate Framework
J2EE Struts with Hibernate Framework
 
5. Curso Java Struts I (Framework para Java) - Curso 2005-2006
5. Curso Java Struts I (Framework para Java) - Curso 2005-20065. Curso Java Struts I (Framework para Java) - Curso 2005-2006
5. Curso Java Struts I (Framework para Java) - Curso 2005-2006
 
excepciones_java en www.fiec.espol.edu.ec
excepciones_java  en www.fiec.espol.edu.ecexcepciones_java  en www.fiec.espol.edu.ec
excepciones_java en www.fiec.espol.edu.ec
 
4. Curso Java JSP (Java Server Pages) - Curso 2005-2006
4. Curso Java JSP (Java Server Pages) - Curso 2005-20064. Curso Java JSP (Java Server Pages) - Curso 2005-2006
4. Curso Java JSP (Java Server Pages) - Curso 2005-2006
 
2. Java Servlets (J2EE) - Curso 2005-2006
2. Java Servlets (J2EE) - Curso 2005-20062. Java Servlets (J2EE) - Curso 2005-2006
2. Java Servlets (J2EE) - Curso 2005-2006
 
Unidad 5: Excepciones Ejercicio 3
Unidad 5: Excepciones Ejercicio 3Unidad 5: Excepciones Ejercicio 3
Unidad 5: Excepciones Ejercicio 3
 
Servidor HTTP Apache
Servidor HTTP ApacheServidor HTTP Apache
Servidor HTTP Apache
 
excepciones en java
excepciones en javaexcepciones en java
excepciones en java
 

Similar a Clase 6 excepciones

Similar a Clase 6 excepciones (20)

Excepciones
ExcepcionesExcepciones
Excepciones
 
Excepciones
ExcepcionesExcepciones
Excepciones
 
Excepciones en java
Excepciones en javaExcepciones en java
Excepciones en java
 
JAVA ORIENTADO A OBJETOS - EXCEPCIONES
JAVA ORIENTADO A OBJETOS - EXCEPCIONESJAVA ORIENTADO A OBJETOS - EXCEPCIONES
JAVA ORIENTADO A OBJETOS - EXCEPCIONES
 
Manejo Estructurado De Excepciones
Manejo Estructurado De ExcepcionesManejo Estructurado De Excepciones
Manejo Estructurado De Excepciones
 
Taller 1 4
Taller 1 4Taller 1 4
Taller 1 4
 
Java oo tema09_excepciones
Java oo tema09_excepcionesJava oo tema09_excepciones
Java oo tema09_excepciones
 
Excepciones
ExcepcionesExcepciones
Excepciones
 
Capitulo 16- Excepciones en Java
Capitulo 16- Excepciones en JavaCapitulo 16- Excepciones en Java
Capitulo 16- Excepciones en Java
 
Clase 5
Clase 5Clase 5
Clase 5
 
Lab excepciones
Lab excepcionesLab excepciones
Lab excepciones
 
Excepciones en java
Excepciones en javaExcepciones en java
Excepciones en java
 
Unidad 7 conceptos Avanzados en la Programacion orientado a objetos
Unidad 7 conceptos Avanzados en la Programacion orientado a objetosUnidad 7 conceptos Avanzados en la Programacion orientado a objetos
Unidad 7 conceptos Avanzados en la Programacion orientado a objetos
 
05 java excepciones
05 java excepciones05 java excepciones
05 java excepciones
 
Excepciones
ExcepcionesExcepciones
Excepciones
 
Guia demanejodeexcepcionesaserciones
Guia demanejodeexcepcionesasercionesGuia demanejodeexcepcionesaserciones
Guia demanejodeexcepcionesaserciones
 
5. otros aspectos de la programación orientada a objetos
5. otros aspectos de la programación orientada a objetos5. otros aspectos de la programación orientada a objetos
5. otros aspectos de la programación orientada a objetos
 
Errores
ErroresErrores
Errores
 
Excepciones en Java
Excepciones en JavaExcepciones en Java
Excepciones en Java
 
Gestión de Excepciones
Gestión de ExcepcionesGestión de Excepciones
Gestión de Excepciones
 

Más de Jorge Gamez

Más de Jorge Gamez (19)

Python i
Python iPython i
Python i
 
Practica repaso 4 5 2da
Practica repaso 4 5 2daPractica repaso 4 5 2da
Practica repaso 4 5 2da
 
Practica repaso 1 3-2
Practica repaso 1 3-2Practica repaso 1 3-2
Practica repaso 1 3-2
 
Practica repaso pilas y colas con archivos
Practica repaso pilas y colas   con archivosPractica repaso pilas y colas   con archivos
Practica repaso pilas y colas con archivos
 
Practica repaso pilas y colas
Practica repaso pilas y colasPractica repaso pilas y colas
Practica repaso pilas y colas
 
Practica 5
Practica  5Practica  5
Practica 5
 
Practica 4
Practica  4Practica  4
Practica 4
 
Practica 3
Practica  3Practica  3
Practica 3
 
Practica 2
Practica  2Practica  2
Practica 2
 
Practica 1
Practica  1Practica  1
Practica 1
 
Practica repaso 1 3-2
Practica repaso 1 3-2Practica repaso 1 3-2
Practica repaso 1 3-2
 
Clase5
Clase5Clase5
Clase5
 
Clase4
Clase4Clase4
Clase4
 
Clase3
Clase3Clase3
Clase3
 
Clase2
Clase2Clase2
Clase2
 
Clase1
Clase1Clase1
Clase1
 
Clase archivos
Clase   archivosClase   archivos
Clase archivos
 
2 da clase la ingeniería
2 da clase  la ingeniería2 da clase  la ingeniería
2 da clase la ingeniería
 
Presentación clase 3
Presentación clase 3Presentación clase 3
Presentación clase 3
 

Clase 6 excepciones

  • 1. Algoritmos y Programación Manejo de Excepciones www.unaj.edu.ar
  • 2. Algoritmos y Programación Temario • Manejo de Excepciones – ¿Qué es un excepción? – ¿Qué hay que investigar del lenguaje cuando tiene manejo de excepciones? – Excepciones en Python www.unaj.edu.ar
  • 3. Algoritmos y Programación ¿Qué es un excepción? www.unaj.edu.ar
  • 4. Algoritmos y Programación ¿Qué es una excepción? • Una excepción es un acontecimiento, que ocurre durante la ejecución de un programa, que interrumpe el flujo normal de las instrucciones de programa. – Ejemplo de excepciones: •Abrir un archivo que no existe. •Acceder en una lista a un valor que no existe. •Invocar a un método que no existe. •Referirse a una variable que no existe. •Mezclar tipos de datos sin convertirlos previamente. •Etc. www.unaj.edu.ar
  • 5. Algoritmos y Programación Ejemplo de excepciones “sin manejar o gestionar” Ej. de excepción por tratar de acceder a un indice no existente de la lista. IndexError: nombre de la excepción levantada Ej. de excepción por variable no definida. NameError: nombre de la excepción levantada. Ej. de excepción por no existir un archivo. IOError: nombre de la excepción levantada. www.unaj.edu.ar
  • 6. Algoritmos y Programación Ejemplo de excepciones no manejadas y manejadas por el programador Salida con manejo de excepciones por el programador. SIN ERROR! Constructor para manejo “Crea un nuevo elemento en la excepciones lista” www.unaj.edu.ar
  • 7. Algoritmos y Programación ¿El lenguaje tiene algún no manejadas y manejar Ejemplo de excepciones mecanismo para manejadas las el programador por excepciones? – Existen lenguajes que no presentan mecanísmos exclusivo para manejo de excepciones. En esos casos podrían tratar de simular el manejo de las excepciones con otros recursos. Ej. Pascal – Los lenguajes que tienen manejo de excepciones lo trabajan con las estructuras definidas para ello. Ej. Python, Ada, Java, etc. www.unaj.edu.ar
  • 8. Algoritmos y Programación ¿Qué hay que investigar del lenguaje cuando tiene manejo de excepciones? www.unaj.edu.ar
  • 9. Algoritmos y Programación – ¿Qué acción se toma después de levantada y manejada una excepción. Se continúa con la ejecución de la unidad que lo provocó o se termina? – ¿Cuál es su ámbito? – ¿Cómo se alcanza una excepción? – ¿Cómo especificar la unidades (manejadores de excepciones) que se han de ejecutar cuando se alcanza las excepciones? – ¿Qué sucede cuando no se encuentra un manejador para una excepción levantada? – ¿El lenguaje tiene excepciones predefinidas? www.unaj.edu.ar
  • 10. Algoritmos y Programación Excepciones en Python www.unaj.edu.ar
  • 11. Algoritmos y Programación Excepciones en Phyton La estructura que presenta Python para manejo de excepciones es la siguiente: Un conjunto de try: excepciones pueden ser sentencia 1 manejadas por un mismo .... manejador. En ese caso se puede colocar: sentencia n except nombre de la excepción 1: except sentencias (exp1,exp2,..): .. Puede aparecer un except SIN nombre de except nombre de la excepción n: excepción, pero SOLO al sentencias final. Actúa como comodín else: except: sentencias finally: Opcional sentencias www.unaj.edu.ar
  • 12. Algoritmos y Programación Cláusulas else y finally else: • El código colocado en la cláusula else se ejecuta solo si no se levante una excepción finally: • El código colocado en la cláusula finally se ejecuta siempre se haya o no levantado una excepción www.unaj.edu.ar
  • 13. Algoritmos y Programación Ejemplo con else Cláusula opcional, que se ejecuta SOLO si NO se levanta excepción en el bloque try except Se levanta la excepción..  NO se ejecuta el bloque else NO se levanta la excepción..  SI se ejecuta el bloque else www.unaj.edu.ar
  • 14. Algoritmos y Programación Ejemplo con finally Cláusula opcional, pero que permite que se ejecute una serie de sentencias SIEMPRE, ya sea que el proceso haya o no terminado bien NO se levanta la excepción.. SI levanta la excepción..  SE ejecuta el bloque finally  SE ejecuta el bloque finally www.unaj.edu.ar
  • 15. Algoritmos y Programación ¿Qué sucede cuando una excepción no encuentra un manejador en su bloque “try except”? Operación que levantará una excepción del tipo NameError, “variable no definida” NO SE ENCUENTRA EL MANEJADOR para esa excepción. ¿Cuál es la acción que se toma? www.unaj.edu.ar
  • 16. Algoritmos y Programación Busca estáticamente: – Analiza si ese try está contenido dentro de otro y si ese otro tiene un manejador para esa excepción.. Se produce un error del tipo: NameError, “variable no definida”, que NO es manejada por el bloque try except interno. Se termina ese bloque interno y se SI es manejada por el busca un manejador bloque try except que lo más en un bloque contiene… externo. Ejecuta el manejador del bloque que lo contiene. www.unaj.edu.ar
  • 17. Algoritmos y Programación Sino va a buscar a quién lo llamó: Ej.: Uso de una función definida en el Modulo “modulo1” Módulo que contiene la función “elemento” . Solo maneja la excepción NameError “ Código que: -Importa el modulo1 -Invoca a unas de sus funciones y -Maneja la excepción IndexError El error se levantó en la func “elemento” y no se manejó allí www.unaj.edu.ar
  • 18. Algoritmos y Programación Si no se encuentra un manejador : – Es una excepción no manejada, y la ejecución se frena con un mensaje como los mostrados antes El módulo que contiene la función “elemento” solo maneja la excepción NameError y el código que la invoca solo maneja la excepción IOError, NO hay manejador para IndexError Se corta el proceso y larga el mensaje standard de error www.unaj.edu.ar
  • 19. Algoritmos y Programación Levantando excepciones explícitamente con “raise” El programador controla que exista el índice y en caso contrario explícitamente levanta la excepción con la sentencia raise www.unaj.edu.ar
  • 20. Algoritmos y Programación Algunas de excepciones predefinidas – ZeroDivisionError (ArithmeticError): Lanzada cuando el segundo argumento de una operación de división o módulo, era 0. – EOFError (StandardError): Se intentó leer más allá del final de fichero. – IOError (EnvironmentError): Error en una operación de entrada/salida.. – ImportError (StandardError): No se encuentra el módulo o el elemento del módulo que se quería importar. – IndexError (LookupError): El índice de la secuencia está fuera del rango posible. – KeyError (LookupError): La clave no existe. – MemoryError (StandardError): Memoria disponible insuficiente. www.unaj.edu.ar
  • 21. Algoritmos y Programación Algunas de excepciones predefinidas – NameError (StandardError): No se encontró ningún elemento con ese nombre. Suele lanzarse cuando se usan varibles no declaradas (se puede deber a errores de tipeo). – RuntimeError (StandardError): Error en tiempo de ejecución no especificado. – NotImplementedError (RuntimeError): Ese método o función no está implementado. – SyntaxError (StandardError): Clase padre para los errores sintácticos. – IndentationError (SyntaxError): Error en la indentación del archivo. – TypeError (StandardError): Tipo de argumento no apropiado. – ValueError (StandardError): Valor del argumento no apropiado. – Etc. www.unaj.edu.ar
  • 22. Algoritmos y Programación Excepciones definidas por el usuario – En Python se pueden definir excepciones propias, esto se logra creando una clase que herede de Exception Explícitamente debemos levantar nuestra excepción con la sentencia raise www.unaj.edu.ar