Manejar errores
Los errores van a pasar sí o sí. La diferencia entre un script y un programa serio es qué ocurre cuando pasan.
Handling errors
Errors will happen, guaranteed. The difference between a script and a serious program is what happens when they do.
Cuando Python encuentra un error, se detiene en seco. Todo lo que venía después no se ejecuta.
Mira: la última línea nunca aparece.
When Python hits an error, it stops dead. Everything after it never runs.
Look: the last line never appears.
Imagina que eso pasa mientras alguien está usando tu programa: se cierra sin explicación y pierde lo que estaba haciendo.
Imagine that happening while someone is using your program: it closes with no explanation and they lose what they were doing.
Se lee tal cual: "intenta esto; si falla, haz esto otro".
Lo que va dentro de try se ejecuta normalmente. Si algo revienta, en vez de
morirse, salta al except.
It reads exactly as written: "try this; if it fails, do that instead".
What is inside try runs normally. If something blows up, instead of dying it
jumps to except.
Un except pelado atrapa cualquier error, incluso los que no
esperabas — y eso esconde bugs. Es mejor decir cuál te interesa.
Recuerda los nombres que viste en el primer tutorial: ValueError,
TypeError, KeyError, ZeroDivisionError.
A bare except catches any error, including ones you did not
expect — and that hides bugs. Better to say which one you mean.
Remember the names from the first tutorial: ValueError, TypeError,
KeyError, ZeroDivisionError.
Dos piezas que completan la estructura:
else— se ejecuta solo si no hubo error.finally— se ejecuta siempre, haya fallado o no. Sirve para cerrar cosas: un archivo, una conexión.
Two pieces that complete the structure:
else— runs only if there was no error.finally— runs always, whether it failed or not. Useful for closing things: a file, a connection.
En la práctica, casi siempre lo vas a usar para lo mismo: validar lo que escribe una persona, que es de donde vienen la mayoría de los errores.
Este patrón —pedir hasta que sea válido— es el que verás en todos lados:
In practice you will almost always use it for the same thing: validating what a person types, which is where most errors come from.
This pattern — asking until it is valid — is the one you will see everywhere:
try, except, atrapar errores específicos, ver su mensaje, y
else/finally.
Ahora una de las cosas por las que la gente se enamora de Python.
try, except, catching specific errors, reading their message, and
else/finally.
Now one of the things that makes people fall in love with Python.