Menu
Coddy logo textTech

Manejo de múltiples excepciones

Parte de la sección Logic & Flow del Journey de Python de Coddy — lección 65 de 78.

En Python, podemos manejar diferentes tipos de excepciones en bloques except independientes. Esto nos permite responder de manera diferente según el error específico que ocurra.

Comience con una estructura básica try-except:

try:
    # Code that might raise exceptions
    pass
except Exception as e:
    # Handle any exception
    pass

Para manejar múltiples excepciones, añade bloques except específicos:

try:
    number = int(input("Enter a number: "))
    result = 10 / number
    print(result)
except ValueError:
    print("That's not a valid number!")
except ZeroDivisionError:
    print("Cannot divide by zero!")

También puedes capturar múltiples tipos de excepciones en un solo bloque except:

try:
    # Algún código
    pass
except (ValueError, TypeError):
    print("Invalid input type!")

El orden de los bloques except importa: siempre coloca las excepciones más específicas antes que las más generales.

challenge icon

Desafío

Fácil

Crea una función llamada process_data que:

  1. Reciba una entrada de cadena que represente datos potenciales
  2. Intente convertirla a un entero, luego calcule 100 dividido por ese entero
  3. Devuelva el resultado
  4. Maneje al menos 3 posibles excepciones: 
    • ValueError si la entrada no se puede convertir a un entero (imprima "Input must be a number!")
    • ZeroDivisionError si la entrada es 0 (imprima "Cannot divide by zero!")
    • Cualquier otra excepción con un manejador genérico (imprima "An unexpected error occurred!")

Hoja de referencia

Maneja diferentes tipos de excepciones usando múltiples bloques except:

try:
    number = int(input("Enter a number: "))
    result = 10 / number
    print(result)
except ValueError:
    print("That's not a valid number!")
except ZeroDivisionError:
    print("Cannot divide by zero!")

Captura múltiples tipos de excepciones en un solo bloque except:

try:
    # Algo de código
    pass
except (ValueError, TypeError):
    print("Invalid input type!")

Coloca siempre las excepciones más específicas antes que las más generales en el orden de los bloques except.

Pruébalo tú mismo

def process_data(input_string):
    try:
        # Intenta convertir la cadena de entrada a un entero
        
        # Calcula 100 dividido por el valor de entrada
        
        # Devuelve el resultado
        
    except ValueError:
        # Maneja el caso donde la entrada no se puede convertir a un entero
        
    except ZeroDivisionError:
        # Maneja el caso donde la entrada es cero
        
    except:
        # Maneja cualquier otra excepción inesperada
        
    return None
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Logic & Flow