B谩sicos del Lenguaje

1

Gu铆a de instalaci贸n y conceptos b谩sicos

2

Archivos y slides del curso pr谩ctico de Python

3

IMPORTANTE: Instalando Ubuntu Bash en Windows para facilitarte el seguimiento del curso desde Windows.

4

驴Qu茅 es la programaci贸n?

5

驴Por qu茅 programar con Python?

6

Operadores matem谩ticos

7

Variables y expresiones

8

Presentaci贸n del proyecto

9

Funciones

10

Usando funciones en nuestro proyecto

11

Operadores l贸gicos

12

Estructuras condicionales

Uso de strings y ciclos

13

Strings en Python

14

Operaciones con Strings en Python

15

Operaciones con strings y el comando Update

16

Operaciones con strings y el comando Delete

17

Operaciones con strings: Slices en python

18

For loops

19

While loops

20

Iterators and generators

Estructuras de Datos

21

Uso de listas

22

Operaciones con listas

23

Agregando listas a nuestro proyecto

24

Diccionarios

25

Agregando diccionarios a nuestro proyecto

26

Tuplas y conjuntos

27

Tuplas y conjuntos en c贸digo

28

Introducci贸n al m贸dulo collections

29

Python comprehensions

30

B煤squedas binarias

31

Continuando con las B煤squedas Binarias

32

Manipulaci贸n de archivos en Python 3

Uso de objetos y m贸dulos

33

Decoradores

34

Decoradores en Python

35

驴Qu茅 es la programaci贸n orientada a objetos?

36

Programaci贸n orientada a objetos en Python

37

Scopes and namespaces

38

Introducci贸n a Click

39

Definici贸n a la API p煤blica

40

Clients

41

Servicios: L贸gica de negocio de nuestra aplicaci贸n

42

Interface de create: Comunicaci贸n entre servicios y el cliente

43

Actualizaci贸n de cliente

44

Interface de actualizaci贸n

45

Manejo de errores y jerarqu铆a de errores en Python

46

Context managers

Python en el mundo real

47

Aplicaciones de Python en el mundo real

Conclusiones finales

48

Python 2 vs 3 (Conclusiones)

Clases bonus

49

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

Manejo de errores y jerarqu铆a de errores en Python

45/49
Recursos

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 鈥溾渁ventar鈥濃 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谩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.

Aportes 36

Preguntas 3

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

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

Jerarqu铆a de clases para las build-in Exceptions:

.

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:

  • try: Ejecuta este c贸digo
  • except: Ejecuta este c贸digo cuando hay una excepci贸n
  • else: 驴No hay excepciones? Ejecuta este c贸digo
  • finally: Siempre ejecuta este c贸digo

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.

Muy bien explicado.

Buena Info, adelantarse a posiblies errores

Para complementar la clase, este es un tutorial con ejemplos de manejo de errores (try, except):

https://www.youtube.com/watch?v=2MaAs7XU2T0

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.

  • Los programas en python pueden terminar inesperadamente, si encuentran un error.
  • Los errores son lanzados por el keyword raise.
  • Podemos generar nuestro propios errores, extendiendo la clase gen茅rica de errores BaseException.
  • Para evitar que el programa termine inesperadamente, se debe contar con una estrategia de control de errores. Para ello se utiliza try ... except ... else ... finaly.