0% encontró este documento útil (0 votos)
15 vistas

Excepciones Python

Este documento trata sobre el manejo de excepciones en programación. Explica qué son las excepciones, cómo afectan el flujo normal de un programa y cómo algunos lenguajes como Python permiten manejarlas de forma estructurada mediante bloques try-except-finally. También cubre temas como qué investigar del lenguaje sobre su soporte para excepciones y qué sucede si una excepción no encuentra un manejador.

Cargado por

jibob63286
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
15 vistas

Excepciones Python

Este documento trata sobre el manejo de excepciones en programación. Explica qué son las excepciones, cómo afectan el flujo normal de un programa y cómo algunos lenguajes como Python permiten manejarlas de forma estructurada mediante bloques try-except-finally. También cubre temas como qué investigar del lenguaje sobre su soporte para excepciones y qué sucede si una excepción no encuentra un manejador.

Cargado por

jibob63286
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 22

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
Ejemplo de excepciones
tiene algún mecanismo
no manejadas
para
y manejadas
manejar
por excepciones?
las el programador

– 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
buscapor
unelmanejador
bloque try except que
en un bloquelo más
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

También podría gustarte