Clase 6   excepciones
Upcoming SlideShare
Loading in...5
×
 

Clase 6 excepciones

on

  • 854 views

 

Statistics

Views

Total Views
854
Views on SlideShare
847
Embed Views
7

Actions

Likes
0
Downloads
5
Comments
0

1 Embed 7

http://127.0.0.1 7

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Clase 6   excepciones Clase 6 excepciones Presentation Transcript

  • 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 manejode 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