Google+ Seguidores

miércoles, 27 de junio de 2018

Manejo de Excepciones

Introducción:

Hola amigo de Internet, mi nombre es Luis y les doy la bienvenida nuevamente a Mi Diario Python, el mejor blog para Aprender a programar en Python.

Errores, como programadores, sabemos que los errores en nuestro vida diaria es lo más común del mundo. No podemos decir que no cometeremos más errores, porque de ellos aprendemos y nos ayudan a mejorar nuestra experiencia. Lo que sí podemos hacer es aprender a manejarlos de manera correcta. Por ello hoy veremos el manejo de excepciones para que luego de nuestras errores haya más que un mensaje de error.

Resultado de imagen para python excepciones

Excepciones:

Las excepciones ocurren cuando algo sale mal, debido a código incorrecto o entradas incorrectas. Cuando ocurre una excepción, el programa se detiene inmediatamente.

A continuación veremos un código que genera la excepción ZeroDivisionError al tratar de dividir 3 entre 0.

num1 = 3
num2 = 0
print(num1/num2)

ZeroDivisionError: division by zero

Distintas excepciones se levantan por distintas razones. A continuación mencionare algunas:

  • ImportError: falla una importación;
  • IndexError: una lista es indexada con un número fuera de rango;
  • NameError: una variable desconocida es utilizada;
  • SyntaxError: el código no puede ser analizado correctamente;
  • TypeError: una función es llamada con un valor de un tipo inapropiado;
  • ValueError: Una función es llamada con un valor de tipo correcto pero con un valor incorrecto.

Manejo de Excepciones:

Para manejar excepciones y ejecutar código cuando ocurre una excepción, puede utilizar la sentencia try/except. El bloque try contiene código que puede lanzar una excepción. Si ocurre una excepción, el código en el bloque try deja de ser ejecutado y el código en el bloque except se ejecuta. Si no ocurre ningún error, el código en el bloque except no se ejecuta.

try:
    num1 = 3
    num2 = 0
    print(num1/num2)
    print("Calculo realizado correctamente")
except ZeroDivisionError:
    print("Un Error a ocurrido al tratar de dividir entre 0")

Un Error a ocurrido al tratar de dividir entre 0


Como pueden observar, aunque ocurra un error, se ejecuta el código definido por nosotros mismos.

Una sentencia try puede tener varios bloques except para manejar diferentes excepciones. Varias excepciones también pueden ser colocadas en un solo bloque except utilizando paréntesis, para tener un solo bloque except que las maneje a todas.

try:
    number = 10
    string = "hola"
    print(number + string)
    print(number / 2)
except ZeroDivisionError:
    print("División entre cero")
except (ValueError, TypeError):
    print("Ha ocurrido un error")

Ha ocurrido un error

Una sentencia except sin niguna excepción especificada atrapara a todos los errores. Estos deben utilizarse con errores inesperados y esconder errores de programación.

try:
    string = "Hola"
    print(string / 0)
except:
    print("Ha ocurrido un error")

Ha ocurrido un error

Finally:

Para asegurar que algún código se ejecute no importar cuál error ocurra, puedes utilizar la sentencia finally. La sentencia finally se coloca en el fondo de una sentencia try/except. El código dentro de una sentencia finally siempre se ejecuta luego del código en los bloques try y posiblemente en los bloques except también.

try:
    print("Hola")
    print(1/0)
except ZeroDivisionError:
    print("División entre cero")
finally:
    print("Este código se ejecutara sin importar nada")

Hola
División entre cero
Este código se ejecutara sin importar nada

Levantando Excepciones:

Podemos levantar nuestras propias excepciones utilizando la sentencia raised.

print(1)
raise ValueError
print(2)

1
ValueError

Las excepciones pueden ser levantas con argumentos que den detalles sobre ellas.

nombre = "123"
raise NameError("Nombre invalido!!!")

NameError: Nombre invalido!!!


Bueno, con estos conceptos básicos, ya podemos decir que afrontamos nuestros errores. 

¿Alguna duda?Entonces no dudes en dejar tu comentario.

Mi nombre es Luis, y fue un placer compartir mis conocimientos con todos ustedes :D.

No hay comentarios :
Write comentarios

Tu comentario es importante y nos motiva a seguir escribiendo...

Powered by Blogger .