CursosEmpresasBlogLiveConfPrecios

Manejo de excepciones

Clase 15 de 21 • Curso de Python Intermedio: Comprehensions, Lambdas y Manejo de Errores

Clase anteriorSiguiente clase

Contenido del curso

Preparación antes de empezar
  • 1
    Algunas cosas que aprenderás sobre Python en este curso

    Algunas cosas que aprenderás sobre Python en este curso

    01:36
  • 2
    El Zen de Python

    El Zen de Python

    08:30
  • 3
    ¿Qué es la documentación?

    ¿Qué es la documentación?

    04:33
Entorno virtual
  • 4
    ¿Qué es un entorno virtual?

    ¿Qué es un entorno virtual?

    03:56
  • 5
    El primer paso profesional: creación de un entorno virtual

    El primer paso profesional: creación de un entorno virtual

    08:30
  • 6
    Instalación de dependencias con pip

    Instalación de dependencias con pip

    09:53
  • quiz Entorno virtual

Alternativa a los ciclos: comprehensions
  • 7
    Listas y diccionarios anidados

    Listas y diccionarios anidados

    12:32
  • 8
    List comprehensions

    List comprehensions

    07:39
  • 9
    Dictionary comprehensions

    Dictionary comprehensions

    06:00
  • quiz Alternativa a los ciclos: comprehensions

Conceptos avanzados de funciones
  • 10
    Funciones anónimas: lambda

    Funciones anónimas: lambda

    05:42
  • 11
    High order functions: filter, map y reduce

    High order functions: filter, map y reduce

    10:40
  • 12
    Proyecto: filtrando datos

    Proyecto: filtrando datos

    14:35
  • quiz Conceptos avanzados de funciones

Manejo de errores
  • 13
    Los errores en el código

    Los errores en el código

    08:54
  • 14
    Debugging

    Debugging

    12:27
  • 15
    Manejo de excepciones

    Manejo de excepciones

    10:53
  • 16
    Poniendo a prueba el manejo de excepciones

    Poniendo a prueba el manejo de excepciones

    04:12
  • 17
    Assert statements

    Assert statements

    07:55
  • quiz Manejo de errores

Manejo de archivos
  • 18
    ¿Cómo trabajar con archivos?

    ¿Cómo trabajar con archivos?

    06:52
  • 19
    Trabajando con archivos de texto en Python

    Trabajando con archivos de texto en Python

    12:27
  • quiz Manejo de archivos

Conclusión
  • 20
    Reto final: Juego del Ahorcado o Hangman Game

    Reto final: Juego del Ahorcado o Hangman Game

    03:43
  • 21
    Continúa tu camino profesional con Python

    Continúa tu camino profesional con Python

    02:17
    Marvin Alvarenga

    Marvin Alvarenga

    student•
    hace 5 años

    Algo que aparece casi al final de la lectura recomendada en el documentación de Python es que se puede agregar un "else" al try-except.

    TRY: En el try se coloca código que esperamos que pueda lanzar algún error. EXCEPT: En el except se maneja el error, es decir, si ocurre un error dentro del bloque de código del try, se deja de ejecutar el código del try y se ejecuta lo que se haya definido en el Except. ELSE: El else se ejecuta sólo si no hubo ninguna excepción lanzada desde el try FINALLY: Se ejecuta SIEMPRE, haya sido lanzada la excepción o no haya sido lanzada.

    python.png
      Miguel Angel Reyes Moreno

      Miguel Angel Reyes Moreno

      student•
      hace 5 años

      Excelente aporte, me lo llevaré a mis apuntes.

      Daniel Noreña

      Daniel Noreña

      student•
      hace 5 años

      Que buen aporte, no lo sabia. Muchas Gracias.

    Josue Noha Valdivia

    Josue Noha Valdivia

    student•
    hace 5 años

    Manejo de Excepciones

    • try except → Anidamos nuestro programa en dos bloques de código, el primero es el programa per se (el que se ejecuta normalmente, sin errores) y el segundo representa las instrucciones a seguir en caso de error. Su sintaxis es:
      try: <bloque1> except <error> as <alias>: <bloque 2>
      • <error> es un parámetro opcional, permite capturar sólo el tipo de error indicado, si no se coloca captura todos los errores posibles (es buena práctica capturar cada tipo de error por separado)
      • as <alias> nos permite crear un alias al error, para trabajar con él.
    • raise → Esta instrucción nos permite generar errores, es decir crear nuestros propios errores cuando detectemos que nuestro programa no actúa como debería con cierto tipo de datos Su sintaxis es:
      raise <NombreError>("<descripci[on del error>")
    • fynally → Es una bloque de código que se ejecuta exista un error o no (un tercer bloque después de try except), no es muy usual pero puede darse para cerrar archivos, conexiones a BBDD o liberar recursos
      Daniel David Mármol Rivero

      Daniel David Mármol Rivero

      student•
      hace 5 años

      Muy buen resumen, Josue.

      Moisés Manuel Morín Hevia

      Moisés Manuel Morín Hevia

      student•
      hace 5 años

      También puedes agregar else.

    Iván Mauricio Jaimes Niño

    Iván Mauricio Jaimes Niño

    student•
    hace 5 años

    Jerarquía de las excepciones y errores más comunes:

    Selection_333.png

    Tomado de: Hunt, John. A Beginners Guide to Python 3 Programming.

      Eduardo Rodriguez

      Eduardo Rodriguez

      student•
      hace 5 años

      Excelente imagen, muchas gracias por el aporte

      Moisés Manuel Morín Hevia

      Moisés Manuel Morín Hevia

      student•
      hace 5 años

      Super gráfico !

    Jorge Andrés Robledo Ariza

    Jorge Andrés Robledo Ariza

    student•
    hace 4 años

    Lo que en realidad tenía que imprimir en pantalla en el bloque de Except

      Nicolas Von Muhlinen

      Nicolas Von Muhlinen

      student•
      hace 4 años

      jajajajajjaja me tente

    Enzo Venturi

    Enzo Venturi

    student•
    hace 4 años
      Carlos Celemín

      Carlos Celemín

      student•
      hace 4 años

      Gracias por compartir la imagen

    Miguel Andres Rendon Reyes

    Miguel Andres Rendon Reyes

    student•
    hace 4 años

    Utilizamos el raise error, cuando queremos que dadas ciertas circustancias nuestro programa para y advierta al usuario.

    Miguel Angel Reyes Moreno

    Miguel Angel Reyes Moreno

    student•
    hace 5 años
    try: pass #Código a evaluar except: pass #Si ocurre un error, llegará a esta parte

    Ejemplo con try, raise, except:

    def palindrome(string): try: if len(string) == 0: raise ValueError("No se pueden ingresar cadenas vacías") return string == string[::-1] except ValueError as ve: print(ve) return False try: print(palindrome("")) except TypeError: print("Solo se pueden ingresar strings")

    finally no es muy usado pero aún así es necesario mencionarlo. Corresponde al final de un bloque try. Se usa en casos muy particulares, por ejemplo; cerrar un archivo, cerrar una conexión a una base de datos o liberar recursos externos.

    try: f = open("archivo.txt") # hacer cualquier cosa con nuestro archivo finally: f.close()
      Moisés Manuel Morín Hevia

      Moisés Manuel Morín Hevia

      student•
      hace 5 años

      Buenisimo !

    Jonathan Emmanuel Pumares Chab

    Jonathan Emmanuel Pumares Chab

    student•
    hace 4 años

    Dentro del maneja de excepciones, Python define un conjunto de excepciones integradas en forma de jerarquía, en donde podemos encontrar unas más generales que otras, es decir, para el caso de la excepción ZeroDivisionErrorexiste una excepción más general llamada ArithmeticError, y para el caso de la excepción ArithmeticError existe una excepción más general llamada Exception.

    Por lo que es importante definir bien el orden en el que ponemos cada excepción dentro del try, ya que cada excepción es leída de arriba a abajo, y la primera coincidencia que encuentra es la que ejecuta omitiendo las demás.

    def run(): try: numero = 1 / 0 print(numero) except ZeroDivisionError: print('No se puede divir entre 0') except ArithmeticError: print('Se encontro un error aritmetico') except: print('Se encontro un error') if __name__ == '__main__': run() # No se puede divir entre 0

    Si cambiamos el orden de las excepciones poniendo primero ArithmeticError, entonces la excepción ZeroDivisionError no se ejecutaría:

    def run(): try: numero = 1 / 0 print(numero) except ArithmeticError: print('Se encontro un error aritmetico') except ZeroDivisionError: print('No se puede divir entre 0') except: print('Se encontro un error') if __name__ == '__main__': run() # Se encontro un error aritmetico

    Recuerda entonces poner primero excepciones más concretas antes que las generales, y por último y si así lo deseas poner al final un except sin tipo de excepción para manejar cualquier tipo.

      Hugo Armando Bustamante Umaña

      Hugo Armando Bustamante Umaña

      student•
      hace 3 años

      entonces en un try se puede colocar varias excepciones?

    Carlos Fernando Aguilar González

    Carlos Fernando Aguilar González

    student•
    hace 5 años

    Los ejemplos vistos en clase:

    error2.PNG
    error3.PNG
    error4.PNG
    error5.PNG
    error6.PNG
      Moisés Manuel Morín Hevia

      Moisés Manuel Morín Hevia

      student•
      hace 5 años

      Tjanks.

      Yeison Betancourt

      Yeison Betancourt

      student•
      hace 4 años

      muy buena que mi Dios le pague perrito

    Miguel Andres Rendon Reyes

    Miguel Andres Rendon Reyes

    student•
    hace 4 años

    Nuestro finally, es muy poco utilizado, sin embargo es muy necesario cuándo queremos manejar archivos, cerrar conexiones a bases de datos o a recursos externos. Pues lo que se encuentre dentro de finally, siempre ocurre.

    Royer Guerrero Pinilla

    Royer Guerrero Pinilla

    student•
    hace 5 años

    Try and Except

    Intenta ejecutar esto si no puedes manejar, haz lo que se encuentra en el except

    ++Buena práctica:++ Siempre añade el tipo de excepción, cada libraría trae las suyas, Python tiene unas propias del lenguaje en general y puedes crear las tuyas Excepciones de Python

    Finally

    Es lo que se ejecutara si o si luego del manejo de la excepción

      Moisés Manuel Morín Hevia

      Moisés Manuel Morín Hevia

      student•
      hace 5 años

      También puede haber else.

    Daniel Eduardo Portugal Revilla

    Daniel Eduardo Portugal Revilla

    student•
    hace 4 años

    Try/Except structure

    Gabriel Missael Barco

    Gabriel Missael Barco

    student•
    hace 4 años

    Manejo de excepciones.

    • Try, except → Nos sirve para configurar acciones predeterminadas dado que sucede alguna Exception. 👀 El formato general es:

      try: <código> except <tipo de excepción>: <otro código>
    • raise → Esto nos sirve para manejar errores que python no reconoce como errores directamente. Con esto, nosotros creamos o definimos algo que si es un error.

      if <condición>: raise <tipo de excepción>(<Mensaje>)

      Eso en principio interrumpe el programa (dado que es una excepción). Podemos poner esto dentro de un try-except.

    • finally → Es muy rara de encontrar: cerrar archivos, conexiones y liberar recursos externos 🤔. Suceda un error o no esto sucede.

    Daniela Funes

    Daniela Funes

    student•
    hace 5 años

    En este video (en inglés) se explica muy bien el try/except. Además se recomienda que el código que está entre ambas cláusulas no sea de más de una línea. https://www.youtube.com/watch?v=HdL82tAZR20&t=691s

    Usuario anónimo

    Usuario anónimo

    user•
    hace 4 años

    ⚠ El manejo de excepciones nos permite controlar los errores ocasionados durante la ejecución de nuestro proyecto.

    Nicolás González Barrera

    Nicolás González Barrera

    student•
    hace 4 años
    def divisors(num): try: if num <= 0: raise ValueError("No se pueden numeros negativos") divisors = [] for i in range(1, num+1): if num % i == 0: divisors.append(i) return divisors except ValueError as ve: return ve def run(): try: num = int(input("ingrese")) print(divisors(num)) print("terminó") except ValueError: print("Debes ingresar un numero")
      Jenny Bolívar Díaz

      Jenny Bolívar Díaz

      student•
      hace 4 años

      Muchas gracias por tu aporte. Me tardé un buen tiempo intentando que funcionara y me ayudó tu código. ¿Cómo supiste que la solución era declarar dos funciones aparte? Yo estaba intentando hacer todo desde la sola la declaración de la función de divisors.

    Samuel Alvarez

    Samuel Alvarez

    student•
    hace 5 años

    Manejo de excepciones (raise, try, except y finally)

    Try, Except

    Ejemplo:

    def palindrome(string): return string == string[::-1] print(palindrome(1))

    esto se soluciona con un try, except:

    def palndrome(string): return string == string[::-1] try: print(palindrome(1)) except TypeError: print('Solo se pueden ingresar strings')

    Raise

    Cuando Python no nos informa de un error podemos usar raise para elevar una excepcion deacuerdo al caso:

    def palindrome(string): try: if len(string) == 0: raise ValueError('No se puede ingresar cadenas vacias') return string == string[::-1] except ValueError as ve: print(ve) return False try: print(palindrome('')) except TypeError: print('Solo se pueden ingresar strings')

    por ultimo tenemos finally, el cual es un caso excepcional que nos ejecuta algo así no se ocurra try o except:

    try: f = open('archivo.txt') finally: f.close()
    Manuel Mauricio Torres Olvera

    Manuel Mauricio Torres Olvera

    student•
    hace 5 años

    Aquí mi ejemplo de try / except /else:

    def palindrome(string): try: palindrome = string == string [::-1] except TypeError: print(f"No puedes utilizar números, {string} es un número. ") else: if palindrome == True: print(f"'{string}' es un palíndromo!") elif palindrome == False: print(f"'{string}' no es un palíndromo.") palindrome(50)
      Moisés Manuel Morín Hevia

      Moisés Manuel Morín Hevia

      student•
      hace 5 años

      Te quedo muy bien !

    Asbel Jose Herrera Morales

    Asbel Jose Herrera Morales

    student•
    hace 4 años

    Creo que de alguna manera se ha respondido esta pregunta ya (Libian María Hernández Gil y la validación de los datos de entrada), pero igual la presento.

    Puede darse el caso que utilice el manejo de excepciones cuando es un problema de mala lógica y el código que desarrolle no tuvo el cuidado de prevenir todas las interacciones posibles del usuario. Es decir, puedo desarrollar el código mejor o aplicar manejo de excepciones, ¿Cuál practica se recomienda?¿Es irrelevante elegir entre una u otra?

      Christopher Eder Chantres Justo

      Christopher Eder Chantres Justo

      student•
      hace 4 años

      Hola Asbel, lo recomendable es que para cada entrada de datos tengas claro el manejo de excepciones, sin embargo, si la lógica de tu código no es la mejor deberías centrarte en arreglar eso y posteriormente insertas tus excepciones para tener un mejor control de lo que sucede en tu programa. 😉

    Andres muñoz

    Andres muñoz

    student•
    hace 5 años

    un aporte a la división por cero

    zero division.png

      Diego Buesaquillo

      Diego Buesaquillo

      student•
      hace 5 años

      No tendrías que usar la excepción ZeroDivisionError? No comprendo qué hace Exception.

      Andres muñoz

      Andres muñoz

      student•
      hace 5 años

      Exeption maneja todas las excepciones en python, se podria decir que maneja y controla cualquier error. Si por error usted en vez de poner un cero pone el simbolo de interrogacion o pone el simbolo igual o cualquier letra, el Exception maneja ese error de teclado.

      Y si claro el ZeroDivisionError es la excepcion exacta a manejar. Yo aqui evito cualquier error de usuario. aqui se juega con el print statement.

Escuelas

  • Desarrollo Web
    • Fundamentos del Desarrollo Web Profesional
    • Diseño y Desarrollo Frontend
    • Desarrollo Frontend con JavaScript
    • Desarrollo Frontend con Vue.js
    • Desarrollo Frontend con Angular
    • Desarrollo Frontend con React.js
    • Desarrollo Backend con Node.js
    • Desarrollo Backend con Python
    • Desarrollo Backend con Java
    • Desarrollo Backend con PHP
    • Desarrollo Backend con Ruby
    • Bases de Datos para Web
    • Seguridad Web & API
    • Testing Automatizado y QA para Web
    • Arquitecturas Web Modernas y Escalabilidad
    • DevOps y Cloud para Desarrolladores Web
  • English Academy
    • Inglés Básico A1
    • Inglés Básico A2
    • Inglés Intermedio B1
    • Inglés Intermedio Alto B2
    • Inglés Avanzado C1
    • Inglés para Propósitos Específicos
    • Inglés de Negocios
  • Marketing Digital
    • Fundamentos de Marketing Digital
    • Marketing de Contenidos y Redacción Persuasiva
    • SEO y Posicionamiento Web
    • Social Media Marketing y Community Management
    • Publicidad Digital y Paid Media
    • Analítica Digital y Optimización (CRO)
    • Estrategia de Marketing y Growth
    • Marketing de Marca y Comunicación Estratégica
    • Marketing para E-commerce
    • Marketing B2B
    • Inteligencia Artificial Aplicada al Marketing
    • Automatización del Marketing
    • Marca Personal y Marketing Freelance
    • Ventas y Experiencia del Cliente
    • Creación de Contenido para Redes Sociales
  • Inteligencia Artificial y Data Science
    • Fundamentos de Data Science y AI
    • Análisis y Visualización de Datos
    • Machine Learning y Deep Learning
    • Data Engineer
    • Inteligencia Artificial para la Productividad
    • Desarrollo de Aplicaciones con IA
    • AI Software Engineer
  • Ciberseguridad
    • Fundamentos de Ciberseguridad
    • Hacking Ético y Pentesting (Red Team)
    • Análisis de Malware e Ingeniería Forense
    • Seguridad Defensiva y Cumplimiento (Blue Team)
    • Ciberseguridad Estratégica
  • Liderazgo y Habilidades Blandas
    • Fundamentos de Habilidades Profesionales
    • Liderazgo y Gestión de Equipos
    • Comunicación Avanzada y Oratoria
    • Negociación y Resolución de Conflictos
    • Inteligencia Emocional y Autogestión
    • Productividad y Herramientas Digitales
    • Gestión de Proyectos y Metodologías Ágiles
    • Desarrollo de Carrera y Marca Personal
    • Diversidad, Inclusión y Entorno Laboral Saludable
    • Filosofía y Estrategia para Líderes
  • Diseño de Producto y UX
    • Fundamentos de Diseño UX/UI
    • Investigación de Usuarios (UX Research)
    • Arquitectura de Información y Usabilidad
    • Diseño de Interfaces y Prototipado (UI Design)
    • Sistemas de Diseño y DesignOps
    • Redacción UX (UX Writing)
    • Creatividad e Innovación en Diseño
    • Diseño Accesible e Inclusivo
    • Diseño Asistido por Inteligencia Artificial
    • Gestión de Producto y Liderazgo en Diseño
    • Diseño de Interacciones Emergentes (VUI/VR)
    • Desarrollo Web para Diseñadores
    • Diseño y Prototipado No-Code
  • Contenido Audiovisual
    • Fundamentos de Producción Audiovisual
    • Producción de Video para Plataformas Digitales
    • Producción de Audio y Podcast
    • Fotografía y Diseño Gráfico para Contenido Digital
    • Motion Graphics y Animación
    • Contenido Interactivo y Realidad Aumentada
    • Estrategia, Marketing y Monetización de Contenidos
  • Desarrollo Móvil
    • Fundamentos de Desarrollo Móvil
    • Desarrollo Nativo Android con Kotlin
    • Desarrollo Nativo iOS con Swift
    • Desarrollo Multiplataforma con React Native
    • Desarrollo Multiplataforma con Flutter
    • Arquitectura y Patrones de Diseño Móvil
    • Integración de APIs y Persistencia Móvil
    • Testing y Despliegue en Móvil
    • Diseño UX/UI para Móviles
  • Diseño Gráfico y Arte Digital
    • Fundamentos del Diseño Gráfico y Digital
    • Diseño de Identidad Visual y Branding
    • Ilustración Digital y Arte Conceptual
    • Diseño Editorial y de Empaques
    • Motion Graphics y Animación 3D
    • Diseño Gráfico Asistido por Inteligencia Artificial
    • Creatividad e Innovación en Diseño
  • Programación
    • Fundamentos de Programación e Ingeniería de Software
    • Herramientas de IA para el trabajo
    • Matemáticas para Programación
    • Programación con Python
    • Programación con JavaScript
    • Programación con TypeScript
    • Programación Orientada a Objetos con Java
    • Desarrollo con C# y .NET
    • Programación con PHP
    • Programación con Go y Rust
    • Programación Móvil con Swift y Kotlin
    • Programación con C y C++
    • Administración Básica de Servidores Linux
  • Negocios
    • Fundamentos de Negocios y Emprendimiento
    • Estrategia y Crecimiento Empresarial
    • Finanzas Personales y Corporativas
    • Inversión en Mercados Financieros
    • Ventas, CRM y Experiencia del Cliente
    • Operaciones, Logística y E-commerce
    • Gestión de Proyectos y Metodologías Ágiles
    • Aspectos Legales y Cumplimiento
    • Habilidades Directivas y Crecimiento Profesional
    • Diversidad e Inclusión en el Entorno Laboral
    • Herramientas Digitales y Automatización para Negocios
  • Blockchain y Web3
    • Fundamentos de Blockchain y Web3
    • Desarrollo de Smart Contracts y dApps
    • Finanzas Descentralizadas (DeFi)
    • NFTs y Economía de Creadores
    • Seguridad Blockchain
    • Ecosistemas Blockchain Alternativos (No-EVM)
    • Producto, Marketing y Legal en Web3
  • Recursos Humanos
    • Fundamentos y Cultura Organizacional en RRHH
    • Atracción y Selección de Talento
    • Cultura y Employee Experience
    • Gestión y Desarrollo de Talento
    • Desarrollo y Evaluación de Liderazgo
    • Diversidad, Equidad e Inclusión
    • AI y Automatización en Recursos Humanos
    • Tecnología y Automatización en RRHH
  • Finanzas e Inversiones
    • Fundamentos de Finanzas Personales y Corporativas
    • Análisis y Valoración Financiera
    • Inversión y Mercados de Capitales
    • Finanzas Descentralizadas (DeFi) y Criptoactivos
    • Finanzas y Estrategia para Startups
    • Inteligencia Artificial Aplicada a Finanzas
    • Domina Excel
    • Financial Analyst
    • Conseguir trabajo en Finanzas e Inversiones
  • Startups
    • Fundamentos y Validación de Ideas
    • Estrategia de Negocio y Product-Market Fit
    • Desarrollo de Producto y Operaciones Lean
    • Finanzas, Legal y Fundraising
    • Marketing, Ventas y Growth para Startups
    • Cultura, Talento y Liderazgo
    • Finanzas y Operaciones en Ecommerce
    • Startups Web3 y Blockchain
    • Startups con Impacto Social
    • Expansión y Ecosistema Startup
  • Cloud Computing y DevOps
    • Fundamentos de Cloud y DevOps
    • Administración de Servidores Linux
    • Contenerización y Orquestación
    • Infraestructura como Código (IaC) y CI/CD
    • Amazon Web Services
    • Microsoft Azure
    • Serverless y Observabilidad
    • Certificaciones Cloud (Preparación)
    • Plataforma Cloud GCP

Platzi y comunidad

  • Platzi Business
  • Live Classes
  • Lanzamientos
  • Executive Program
  • Trabaja con nosotros
  • Podcast

Recursos

  • Manual de Marca

Soporte

  • Preguntas Frecuentes
  • Contáctanos

Legal

  • Términos y Condiciones
  • Privacidad
  • Tyc promociones
Reconocimientos
Reconocimientos
Logo reconocimientoTop 40 Mejores EdTech del mundo · 2024
Logo reconocimientoPrimera Startup Latina admitida en YC · 2014
Logo reconocimientoPrimera Startup EdTech · 2018
Logo reconocimientoCEO Ganador Medalla por la Educación T4 & HP · 2024
Logo reconocimientoCEO Mejor Emprendedor del año · 2024
De LATAM conpara el mundo
YoutubeInstagramLinkedInTikTokFacebookX (Twitter)Threads