Atrapar un error
Las líneas que pueden detenerse van bajo try. except nombra la parada que vas a atender. except ZeroDivisionError se ejecuta solo cuando la parada dentro de try tiene ese nombre. Después de try y except enteros, el programa sigue.
try:
print(1 / 0)
print("rice")
except ZeroDivisionError:
print("skip")
print("done")
En pantalla aparece skip, luego done. print(1 / 0) se detiene dentro de try. print("rice") sigue dentro de try, así que no se ejecuta. Atrapar la parada no vuelve atrás para terminar el resto de try. except escribe skip. print("done") está fuera, así que se ejecuta después de atraparla. El programa no termina en esa parada.
El nombre tiene que coincidir. Pon print(tea) dentro de este try y no le des un valor a tea: la parada es NameError. except ZeroDivisionError no atiende ese nombre. El programa se detiene igual. No se escribe skip, ni tampoco done. Esa línea no está en el programa de esta página.
Si todas las líneas dentro de try terminan, except no se ejecuta. El programa siguiente empieza de nuevo. Aquí no queda nada de la primera pantalla.
try:
print(8 / 2)
except ZeroDivisionError:
print("skip")
print("done")
En pantalla aparece 4.0, luego done. 4.0 es cuatro, con un punto decimal. No hubo parada, así que skip no se escribe. done se ejecuta igual, porque está fuera de la captura.
Las líneas bajo try y bajo except van sangradas. Esa sangría es lo que las mete dentro. print("done") no está sangrado bajo except, así que no forma parte de la captura. Se ejecuta cuando try termina, y también cuando se atrapa la parada nombrada.
La página siguiente trata de provocar una parada tú mismo. Esta página solo atrapa una parada a la que una línea ya llegó, y solo cuando el nombre coincide.
Qué se escribe y qué se salta
- ¿Qué escribe el primer programa?
- ¿Qué pasa con print("rice")?
- ¿Qué escribe el segundo programa?
- ¿Qué pasa si print(tea) está dentro de try, tea nunca recibió un valor y except solo nombra ZeroDivisionError?
El nombre tiene que coincidir
La primera pantalla es skip, luego done. rice no se ejecuta, porque sigue dentro de try después de la parada. La segunda es 4.0, luego done, y skip no se escribe. NameError no lo atrapa except ZeroDivisionError. done está fuera, así que se ejecuta al atrapar la parada nombrada y cuando try termina. La página siguiente es provocar una parada tú mismo.
🧠 Pon a Prueba tu Conocimiento
Pon a Prueba tu Conocimiento
Ponte a prueba con este cuestionario interactivo y descubre qué tan bien entiendes el tema
📝 Instrucciones
- Lee cada pregunta cuidadosamente
- Selecciona la mejor respuesta para cada pregunta
- Puedes repetir el quiz tantas veces como quieras
- Tu progreso se mostrará en la parte superior