---
title: "Excepciones en Python"
url: https://blog.creatuwebpymes.com/excepciones-en-python/
date: 2025-10-02
modified: 2025-10-20
author: "franciscobritoda69"
image: https://blog.creatuwebpymes.com/wp-content/uploads/2025/09/excepciones-python.webp
categories: ["Python codigo"]
tags: ["excpetiones en python"]
type: post
lang: es
---

# Excepciones en Python

## Excepciones en Python

El manejo de excepciones en Python es fundamental si quieres desarrollar programas robustos e irrompibles. En definitiva, el manejo de excepciones en Python es el proceso de responder a la aparición de situaciones inesperadas en la ejecución del programa.

Por otro lado tenemos que diferenciar entre una Excepcion y un error de sintaxis.  Ambas situaciones son comunes en Python. Un error de sintaxis ocurre cuando escribimos código que no es correcto por lo que el intérprete de Python no lo puede procesar y da "error" mientras que una excepcion ocurre cuando el código que hemos escrito es correcto, desde el punto de vista de su sintaxis, pero que la correcta ejecución del mismo produce un error.  Veamos un ejemplo de cada uno para su mejor entendimiento.



#### Py

```
//Error de sintaxis# definimos una variable aa = "16'
SyntaxError unmatched: undeterminated string literal
```

```
//Excepcion
# dividimos un numero por 0
division = 20 / 0
ZeroDivisionError: division by zero
```

En el ejemplo anterior si cometemos un error de sintaxis en la definición de la variable a, ya que hemos puesto " y por otro lado ' , lo que nos dará un error en Python y el programa no puede continuar. De ahí en mensaje del intèrprete de Python " **SyntaxError unmatched: undeterminated string literal**".

Debajo un ejemplo de excepciones en Python, vemos que la sintaxis de la operación es correcta, pero la ejecución de dicho código produce un error en el programa al ejecutar dicha división "**ZeroDivisionError: division by zero**". Como sabemos cuando dividimos un número entre 0, el resultado es infinito.

Por tanto lo que vamos a ver en esta entrada es cómo generar excepciones en python, y por otro lado cómo gestionarlas para una mayor claridad y fluidez del programa.

- Raise una excepcion
- Assert una excepcion
- Try - Except
- Try - Except - Else
- Pass
- Finally

## 👉 "Raise" una excepcion

Como mencionamos anteriormente habrá ocasiones en las que se produzcan errores en nuestro código, por lo que debemos ser capaces de gestionarlos para que el programa no se bloquee. La gestión de las excepciones ayudará a otras aplicaciones a comprender tu código.

Para generar una excepción, utilizaremos la palabra clave '**raise**'. La sintaxis es raise tipo de excepcion (mensaje o descripción). Una vez que se ejecuta raise el programa deja de ejecutar el resto del código y sale del programa.



#### Py

```
def raise_exception():
user = input('Inserte un número: ') if not user.isdigit(): raise Exception('No ha introducido un numero')
numero = int(user)
print(numero)#llamamos a la funcionraise_exception()
# Si introducimos un valor no integer el interprete nos respondeInserte un numero: hola
Exception: No ha introducido un numero
```

Arriba tenemos el ejemplo de la función raise_exception() donde se pide al usuario que inserte un número. Luego, convertimos a (https://interactivechaos.com/es/python/function/int) .Si el usuario introduce otro valor que no sea un integer, como en este caso que ha introducido la palabra "hola" , entonces se genera la excepcion a través de la palabra clave **raise **y muestra el mensaje que le sigue. Una vez llegado a este punto el programa deja de ejecutarse.

Si no establecemos una forma para capturar el error que se ha producido, entonces el programa terminará y nos enviará un mensaje estandard para ese error. En cierta forma, es menos estético para el usuario.

## 👉 "Assert" una excepcion

En algunas ocasiones utilizaremos la palabra clave "**assert**", que funciona como una condición a cumplir por parte del código para que el mismo siga ejecutandose. En el caso que esta condición no se cumpla, entonces el mensaje de la excepcion assert se ejecuta, terminando el programa. La sintaxis de assert es la siguiente: assert <condicion a comprobar>. 



#### Py

```
def raise_input(): user = input('Inserte un número: ')
assert int(user).ValueError('Un numero entero no fue introducido')
numero = int(user)
print(numero)#llamamos a la funcióndef raise_input()# Si introducimos un valor no integer el interprete nos responde con ValueError
Inserte un numero: hola
ValueError: Un numero entero no fue introducido

// Otro ejemplodef division(n1,n2): assert n2 != 0, "No puedes dividir entre 0" print(n1/n2)#llamamos a la functiondivision(5,0)#Respuesta del programaAssertionError: No puedes dividir entre 0
```

En el primer ejemplo anterior, vemos que ponemos una condición de que el valor que el usuario inserte tiene que ser del tipo "int" entonces le indica al código que ser producirá un error ValueError y que muestre el mensaje 'Un numero entero no fue introducido'.

En el segundo ejemplo, la condición que se establece es que el número que actúa como divisor no puede ser igual a 0, ya que esto provocaría un resultado infinito.

## 👉 Try - Except estructura de excepciones en Python

Hasta ahora hemos visto las excepciones y cómo generarlas. Ahora utilizaremos una estructura para gestionar dichas excepciones. La estructura **try- except** se utiliza para detectar y gestionar las excepciones. Python ejecuta el código del bloque try y si encuentra un error, la ejecución del código saltará al bloque except.
Las líneas de código del bloque **try** posteriores al error no se ejecutarán. Si no se produce ningún error, el código en el bloque **except** no se ejecutará. El bloque except es donde se capturan las excepciones.

En el segundo ejemplo podemos ver que hay varias claúsulas - except - estableciendo para cada una de ellas un tipo de excepcion diferente.



#### Py

```
def square(): try:
user = input('Inserte un número: ')
numero = int(user)
print(numero**2)
except:
print('No has insertado un numero')

#llamamos a la funcion
square()

# Si hemos introducimos un valor no integer el interprete nos responde
Inserte un numero: hola
No has insertado un numero
// Otro ejemplo de try - except estructuradef divide_numeros(n1,n2): try: n1 = input('Inserte un numero: ') n2 = input('Inserte un segundo numero: ') uno = int(n1) dos = int(n2) resultado = uno / dos return resultado except ValueError: print('No ha insertado dos numeros integer') except ZeroDivisionError: print('El divisor no puede ser 0')
```

En el ejemplo anterior, vemos que en el bloque de - **try** - tenemos el código que se va a ejecutar primeramente, pero si lo que el usuario inserta no es un numero integer, entonces el código deja de ejecutarse para saltar al bloque de - **except** -.

En el segundo ejemplo, en la función divide_numeros() tenemos un bloque - try - donde de nuevo se ejecuta el código principal. En este, se recogen los datos insertados por el usuario en las variables n1 y n2. Posteriormente las variables uno y dos almacenan dichos datos convertidos en números integers para poder realizar la división en resultado. Para finalmente retornar el resultado de la division - **resultado** -.

Si alguna parte del código no se corresponde con lo requerido por el mismo, por ejemplo si n1 o n2 no son numero integers, pues el código deja de ejecutarse y produce una excepcion ValueError, o si en cambio el n2 es un 0, entonces la excepcion será ZeroDivisionError, mostrando los mensajes correspondientes.

 

## 👉 Try - Except - Else estructura

La estructura - **try - except** - puede tener en ocasiones una claúsula opcional - **else** - . Esta claúsula si está presente en el código debe seguir a todas los bloques - except - antes de ser ejecutada. Básicamente el bloque - try - es ejecutado, y si no encuentra ninguna excepcion, entonces el bloque - else - es ejecutado. 

Veamos un ejemplo donde definimos una función llamada **abrir_archivo()** que abrirá un archivo en el bloque try, si no encuentra ningún error, entonces se ejecuta el bloque else. Pero si encontrara un error, se ejecutaría el bloque except, con lo que se envía un mensaje al usuario y el código deja de ejecutarse en ese momento.



#### Py

```
def abrir_archivo(ubicacion): try:
file = open(ubicacion)
except FileNotFoundError:
print('No hay ningun archivo en: ', ubicacion) else: print(file.read())

#llamamos a la funcion
ubicacion = 'python.txt'abrir_archivo(ubicacion)
```

Analizemos el código del ejemplo. Por un lado tenemos una función **abrir_archivo()** que lleva un parámetro **ubicacion**, que correspondería al lugar donde se encuntra el archivo al que queremos acceder.

En el bloque **try** intentamos abrir dicho archivo, accediendo a la ubicación que se nos ha pasado como parámetro file = open(ubicacion). Si dicha ubicación es correcta y de hecho tiene un archivo llamado **python.txt**, el cual vemos abajo cuando llamamos a la función. Entonces no nos encontraremos con el error **FileNotFoundError** y el código continúa al bloque **else**, donde nos imprimirá el contenido de dicho archivo python.txt.

Si por el contrario en dicha ubicación no hubiera ningún archivo con el nombre de python.txt, pues nos imprimiría el mensaje del bloque **except** y ahí terminaría el código sin haber ejecutado el bloque else.

## 👉 Pass

En ciertas ocasiones podremos utilizar la palabra clave **pass. **Cuando pass es ejecutado 'nada' ocurre, es como un comentario en el código, pero con la diferencia que el intérprete si lee pass, cosa que no hace con el comentario.

Pass es útil como marcador de posición cuando se requiere una instrucción desde el punto de vista de sintaxis, pero no es necesario ejecutar ningún código.



#### Py

```
def abrir_archivo(ubicacion): try:
file = open(ubicacion)
except FileNotFoundError:
pass else: print(file.read()) print('Compruebe la ubicación del archivo')

#llamamos a la funcion
ubicacion = 'python.txt'abrir_archivo(ubicacion)
```

El código es prácticamente igual al ejemplo anterior, pero con la diferencia de que si hay algún error en el código como por ejemplo que el archivo, no se encuentre en la ubicación correcta, pues no se activará el bloque - except - ya que tiene - pass - lo que permite que el código se siga ejecutando. En este caso, el programa sigue funcionando y no se muestra ningún mensaje de error y tampoco se ejecuta el código print(file.read()) . En cambio si se ejecutará **print('Compruebe la ubicación del archivo')** que es el mensaje que el usuario verá en su pantalla. .

## 👉 Finally

Por último tenemos otra opción en  - **finally - **con respecto a la gestión de las excepciones en Python**. **Por lo general se utiliza para limpiar acciones que deben ejecutarse en cualquier circunstacia, como por ejemplo en el caso anterior, para cerrar un archivo abierto. Se ejecuta como la última tarea antes de que finalice la instrucción try. Y Se ejecuta independientemente de si se ha producido una excepción o no.



#### Py

```
def division(n1,n2): try: resultado = n1 / n2
except ZeroDivisionError as e:
print(e)
else:
print('El resultado es: ', resultado)
finally:
print('El código ha sido ejecutado')

#llamamos a la funcion
division(4,8)
```

En el ejemplo anterior utilizamos el bloque - finally - para confirmar que el código se ha ejecutado, independientemente si ha habido un error o no.

En definitiva, Python nos ofrece la opción de gestionar las excepciones, lo que puede ser muy útil para que nuestro código sea robusto. Una vez tengas más conocimiento dek lenguaje (https://www.python.org/downloads/) te serán de mucha ayuda.

Si queréis seguir aprendiendo a (https://amzn.to/3Pod40E), podéis encontrar más recursos en este enlace. Creatuwebpymes, es una empresa de (https://creatuwebpymes.com/) en Canarias que ❤️ la programación.

#### Otras entradas del (/blog/)

[!(https://blog.creatuwebpymes.com/wp-content/uploads/2025/03/palindromo-backtofront-post-blog.webp)](https://blog.creatuwebpymes.com/comprueba-palindromos-con-javascript/)

#### (https://blog.creatuwebpymes.com/comprueba-palindromos-con-javascript/)

[!(https://blog.creatuwebpymes.com/wp-content/uploads/2025/03/Calculadora-con-codigo-python-blog.webp)](https://blog.creatuwebpymes.com/calculadora-codigo-python/)

#### (https://blog.creatuwebpymes.com/calculadora-codigo-python/)

[!(https://blog.creatuwebpymes.com/wp-content/uploads/2025/03/dibujar-triangulo-con-javascript.webp)](https://blog.creatuwebpymes.com/dibujar-triangulo-con-javascript/)

#### (https://blog.creatuwebpymes.com/dibujar-triangulo-con-javascript/)

[!(https://blog.creatuwebpymes.com/wp-content/uploads/2025/03/base-de-datos-indexeddb-square.webp)](https://blog.creatuwebpymes.com/indexeddb-base-datos-local/)

#### (https://blog.creatuwebpymes.com/indexeddb-base-datos-local/)

[!(https://blog.creatuwebpymes.com/wp-content/uploads/2025/03/poligonos-en-python-figuras-geometricas.webp)](https://blog.creatuwebpymes.com/figuras-en-python/)

#### (https://blog.creatuwebpymes.com/figuras-en-python/)

[!(https://blog.creatuwebpymes.com/wp-content/uploads/2025/03/python-comprehensions-blog.webp)](https://blog.creatuwebpymes.com/python-comprehensions/)

#### (https://blog.creatuwebpymes.com/python-comprehensions/)
