Un bloque de prueba con múltiples excepciones

2 minutos de lectura

Avatar de usuario de Eva611
Eva611

En Python, ¿es posible tener múltiples except declaraciones para uno try ¿declaración? Como:

try:
    #something1
    #something2
except ExceptionType1:
    #return xyz
except ExceptionType2:
    #return abc

Para el caso de manejar múltiples excepciones de la misma manera, vea Capturar múltiples excepciones en una línea (excepto bloque)

avatar de usuario de vartec
vartec

Sí, es posible.

try:
   ...
except FirstException:
   handle_first_one()

except SecondException:
   handle_second_one()

except (ThirdException, FourthException, FifthException) as e:
   handle_either_of_3rd_4th_or_5th()

except Exception:
   handle_all_other_exceptions()

Ver: http://docs.python.org/tutorial/errores.html

La palabra clave “as” se usa para asignar el error a una variable para que el error pueda investigarse más a fondo más adelante en el código. También tenga en cuenta que los paréntesis para el caso de triple excepción son necesarios en python 3. Esta página tiene más información: Captura múltiples excepciones en una línea (excepto bloque)

  • Si quieres hacer lo mismo en ambos casos, es except (SomeError, OtherError):. No responde la pregunta OP, pero podría ayudar a algunas personas que llegan aquí a través de Google.

    – Marca

    25 de septiembre de 2013 a las 14:43

  • Si, por ejemplo, tiene que convertir varias versiones de una estructura de datos en una nueva estructura, al actualizar versiones de código, por ejemplo, puede anidar las excepciones try..excepts.

    – Rolf de Sajonia

    04/12/2015 a las 14:00

  • Si desea manejar todas las excepciones, debe usar except Exception: en lugar de simple except:. (Simple, excepto que atrapará incluso SystemExit y KeyboardInterrupt que normalmente no es lo que quieres)

    – polvoazul

    6 de febrero de 2018 a las 19:08

  • Tal vez quieras hacer algo con e también ya que le das un nombre 🙂

    – Hola Adios

    25 de marzo de 2020 a las 0:21

  • Si solo quiere evitar recibir un error sin manejar excepciones específicas, puede escribir niveles anidados de prueba/excepto como se menciona también en esta respuesta.

    – Elías

    13 de agosto de 2021 a las 10:53

¿Ha sido útil esta solución?