ya puedo manejar los errores de mi vida 😦
Básicos del Lenguaje
Guía de instalación y conceptos básicos
Archivos y slides del curso práctico de Python
IMPORTANTE: Instalando Ubuntu Bash en Windows para facilitarte el seguimiento del curso desde Windows.
¿Qué es la programación?
¿Por qué programar con Python?
Operadores matemáticos
Variables y expresiones
Presentación del proyecto
Funciones
Usando funciones en nuestro proyecto
Operadores lógicos
Estructuras condicionales
Uso de strings y ciclos
Strings en Python
Operaciones con Strings en Python
Operaciones con strings y el comando Update
Operaciones con strings y el comando Delete
Operaciones con strings: Slices en python
For loops
While loops
Iterators and generators
Estructuras de Datos
Uso de listas
Operaciones con listas
Agregando listas a nuestro proyecto
Diccionarios
Agregando diccionarios a nuestro proyecto
Tuplas y conjuntos
Tuplas y conjuntos en código
Introducción al módulo collections
Python comprehensions
Búsquedas binarias
Continuando con las Búsquedas Binarias
Manipulación de archivos en Python 3
Uso de objetos y módulos
Decoradores
Decoradores en Python
¿Qué es la programación orientada a objetos?
Programación orientada a objetos en Python
Scopes and namespaces
Introducción a Click
Definición a la API pública
Clients
Servicios: Lógica de negocio de nuestra aplicación
Interface de create: Comunicación entre servicios y el cliente
Actualización de cliente
Interface de actualización
Manejo de errores y jerarquía de errores en Python
Context managers
Python en el mundo real
Aplicaciones de Python en el mundo real
Conclusiones finales
Python 2 vs 3 (Conclusiones)
Clases bonus
Entorno Virtual en Python y su importancia: Python en el mundo real
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Convierte tus certificados en títulos universitarios en USA
Antes: $249
Paga en 4 cuotas sin intereses
Termina en:
David Aroesti
Python tiene una amplia jerarquía de errores que nos da posibilidades para definir errores en casos como donde no se pueda leer un archivo, dividir entre cero o si existen problemas en general en nuestro código Python. El problema con esto es que nuestro programa termina, es diferente a los errores de sintaxis donde nuestro programa nunca inicia.
Para ““aventar”” un error en Python utilizamos la palabra raise
. Aunque Python nos ofrece muchos errores es buena práctica definir errores específicos de nuestra aplicación y usar los de Python para extenderlos.
Podemos generar nuestros propios errores creando una clase que extienda de BaseException
.
Si queremos evitar que termine nuestro programa cuando ocurra un error, debemos tener una estrategia. Debemos utilizar try / except cuando tenemos la posibilidad de que un pedazo de nuestro código falle
try
: significa que se ejecuta este código. Si es posible, solo ponemos una sola línea de código ahí como buena prácticaexcept
: es nuestro manejo del error, es lo que haremos si ocurre el error. Debemos ser específicos con el tipo de error que vamos a atrapar.else
: Es código que se ejecuta cuando no ocurre ningún error.finally
: Nos permite obtener un bloque de código que se va a ejecutar sin importar lo que pase.Aportes 36
Preguntas 3
ya puedo manejar los errores de mi vida 😦
Tutorial de Errores y excepciones de python en español.
Python2
http://docs.python.org.ar/tutorial/2/errors.html
Python3
http://docs.python.org.ar/tutorial/3/errors.html
Un error común que me ha tocado solucionar try/catch es la conexión a la base de datos
.
BaseException
+-- SystemExit
+-- KeyboardInterrupt
+-- GeneratorExit
+-- Exception
+-- StopIteration
+-- StopAsyncIteration
+-- ArithmeticError
| +-- FloatingPointError
| +-- OverflowError
| +-- ZeroDivisionError
+-- AssertionError
+-- AttributeError
+-- BufferError
+-- EOFError
+-- ImportError
| +-- ModuleNotFoundError
+-- LookupError
| +-- IndexError
| +-- KeyError
+-- MemoryError
+-- NameError
| +-- UnboundLocalError
+-- OSError
| +-- BlockingIOError
| +-- ChildProcessError
| +-- ConnectionError
| | +-- BrokenPipeError
| | +-- ConnectionAbortedError
| | +-- ConnectionRefusedError
| | +-- ConnectionResetError
| +-- FileExistsError
| +-- FileNotFoundError
| +-- InterruptedError
| +-- IsADirectoryError
| +-- NotADirectoryError
| +-- PermissionError
| +-- ProcessLookupError
| +-- TimeoutError
+-- ReferenceError
+-- RuntimeError
| +-- NotImplementedError
| +-- RecursionError
+-- SyntaxError
| +-- IndentationError
| +-- TabError
+-- SystemError
+-- TypeError
+-- ValueError
| +-- UnicodeError
| +-- UnicodeDecodeError
| +-- UnicodeEncodeError
| +-- UnicodeTranslateError
+-- Warning
+-- DeprecationWarning
+-- PendingDeprecationWarning
+-- RuntimeWarning
+-- SyntaxWarning
+-- UserWarning
+-- FutureWarning
+-- ImportWarning
+-- UnicodeWarning
+-- BytesWarning
+-- ResourceWarning
Muy claro, este concepto lo usas en el curso de Ingeniería de Datos con Python y por fin lo entiendo!
Esta clase si tiene una explicación demasiado pobre, sin ejemplos y sin demostrar todo el potencial de para que sirve el manejo de errores 😦
ya puedo mostrar programas a los de la oficina sin que salgan errores y sin dar mal percepcion
try: significa que se ejecuta este código. Si es posible, solo ponemos una sola línea de código ahí como buena práctica
except: es nuestro manejo del error, es lo que haremos si ocurre el error. Debemos ser específicos con el tipo de error que vamos a atrapar.
else: Es código que se ejecuta cuando no ocurre ningún error.
finally: Nos permite obtener un bloque de código que se va a ejecutar sin importar lo que pase.
Cuando usemos Try: La buena práctica es usar una sola línea de código.
Except:
Ejecuta esté código cuando hay una excepción.
Else: No exceptions? ejecuta esto
De hecho algo que te solicitan como programador de Python suelen solicitar que uses excepciones.
Palabras reservadas para manejar un error o excepciones en Python:
try: Permite que un bloque de codigo busque errores
.
except: Bloque que permite manejar el error
.
finally: Bloque que permite ejecutar codigo, independientemente del resultado de los bloques try y except
.
IMPORTANTE Para manejar el error debemos conocer el tipo de error que genera o que generara al momento de ejecutarlo
.
Como conocer el error que genera un codigo: Para hacer saber a la otra persona o a nosotros mismo que tipo de error esta generando el programa podemos hacerlo de igual forma como vemos el tipo de dato que estamos manejando puesto que recuerda que todo en python es un objeto, entonces en este caso pudiesemos aplicar lo siguiente:
Ejemplo:
try:
c = int(input("Ingrese un valor: "))
c / 0
except Exception as c: #Con esto estamos evaluando la variable para la excepcion
print(type(c)._name) ---> Con esto podemos saber el tipo de el error y el nombre del mismo
#ZeroDivisionError
---
De esta forma, estaria evaluando el error, por que por ejemplo si le pasamos una cadena de texto, entonces el resultado sera un ValueError
IMPORTANTE Tambien podemos poner otras declaraciones de except, para hacer multiples excepciones dentro de una misma declaracion
Toca profundizar también para generar warnings
https://docs.python.org/3/library/warnings.html#warning-categories
BaseException
├── BaseExceptionGroup
├── GeneratorExit
├── KeyboardInterrupt
├── SystemExit
└── Exception
├── ArithmeticError
│ ├── FloatingPointError
│ ├── OverflowError
│ └── ZeroDivisionError
├── AssertionError
├── AttributeError
├── BufferError
├── EOFError
├── ExceptionGroup [BaseExceptionGroup]
├── ImportError
│ └── ModuleNotFoundError
├── LookupError
│ ├── IndexError
│ └── KeyError
├── MemoryError
├── NameError
│ └── UnboundLocalError
├── OSError
│ ├── BlockingIOError
│ ├── ChildProcessError
│ ├── ConnectionError
│ │ ├── BrokenPipeError
│ │ ├── ConnectionAbortedError
│ │ ├── ConnectionRefusedError
│ │ └── ConnectionResetError
│ ├── FileExistsError
│ ├── FileNotFoundError
│ ├── InterruptedError
│ ├── IsADirectoryError
│ ├── NotADirectoryError
│ ├── PermissionError
│ ├── ProcessLookupError
│ └── TimeoutError
├── ReferenceError
├── RuntimeError
│ ├── NotImplementedError
│ └── RecursionError
├── StopAsyncIteration
├── StopIteration
├── SyntaxError
│ └── IndentationError
│ └── TabError
├── SystemError
├── TypeError
├── ValueError
│ └── UnicodeError
│ ├── UnicodeDecodeError
│ ├── UnicodeEncodeError
│ └── UnicodeTranslateError
└── Warning
├── BytesWarning
├── DeprecationWarning
├── EncodingWarning
├── FutureWarning
├── ImportWarning
├── PendingDeprecationWarning
├── ResourceWarning
├── RuntimeWarning
├── SyntaxWarning
├── UnicodeWarning
└── UserWarning
Los errores deben ser manejados de manera estrátégica.
Jerarquía de errores:
Atrapamos los errores para que sean controlados.
A la hora de atrapar un error, tambien necesitamos generar una estrategia, debido a que esa parte en especifico de nuestro programa no puede parar, de esa forma hacemos un try catch que en Python seria mejor dicho como un try: except (error) as error:para hacer una incorporacion en caso de que falle.
Para aventar un error utiizamos el keyword raise, es decir que cuando ocurre algo que sabemos que puede pasar, entonces lanzamos un error para que este termine indicando el error.
Los errores en Python, hacen que el programa termine justo en el momento que se lanza ese error. Por lo que es una desventaja si necesitamos que siga corriendo a pesar de que exista el error.
Los iteradores lanzan una excepción al final. Un
for i in range(n):...
Lanza una expeción al final.
Buena Info, adelantarse a posiblies errores
Para complementar la clase, este es un tutorial con ejemplos de manejo de errores (try, except):
Python utiliza la programacion orientada a objetos con sus errores, de lo que podemos aprovecharnos para extender otros errores.
BaseException es en pocas palabras: todos los errores.
finally se ejecuta no importa lo que pase, debido a que puede que solucionando el error, no terminemos procesos y debido a que el codigo ya se ejecuto, no podemos arreglar o cerrar lo que abrimos, por ello finally nos permite tener un soporte detras.
else es cuando no ocurre un error, osea, cuando va bien, cosa interesante debido a que es mal visto en otros lenguajes.
Except es sencillo, solo ponemos el error que puede suceder, y luego el codigo a ejecutar si este no funciona.
Para poner en forma nuestra estrategia, solo tenemos que poner try, que es el primero, dentro del cual es debidamente adecuado solo poner una sola linea de codigo, ya que si ingresamos mas lineas corremos el riesgo de tener que manejar un error por cada linea.
En Python tenemos una buena sintaxis de errores, Try, except, else and finally.
it's a good practice to define the own applications errors, and uniquely use the built-in exceptions in case we have a problem that fit with it.
Nosotros tambien podemos crear nuestros errores, solo tenemos que poner en nuestra clase, la super clase BaseException.
Python tiene un jerarquia rica de errores.
ya puedo manejar el error de mi ex :v
en otros lenguajes conocía el try/catch,
sin embargo el try/except/else/finally es mucho mas rico en posibilidades.
raise
.BaseException
.try ... except ... else ... finaly
.
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?