Module (48%)
Section (49%)

Excepciones: continuación

Si deseas manejar dos o mas excepciones de la misma manera, puedes usar la siguiente sintaxis:

try: : except (exc1, exc2): :

Simplemente tienes que poner todos los nombres de excepción empleados en una lista separada por comas y no olvidar los paréntesis.


Si una excepción se genera dentro de una función, puede ser manejada:

  • Dentro de la función.
  • Fuera de la función.

Comencemos con la primera variante: observa el código en el editor.

La excepción ZeroDivisionError (la cual es un caso concreto de la clase ArithmeticError) es lanzada dentro de la función badfun(), y la función en sí misma se encarga de su caso.

La salida del programa es:

¡Problema aritmético! FIN.

También es posible dejar que la excepción se propague fuera de la función. Probémoslo ahora.

Observa el código a continuación:

def badFun(n): return 1 / n try: badFun(0) except ArithmeticError: print("¿Que pasó? ¡Se lanzo una excepción!") print("FIN.")

El problema tiene que ser resuelto por el invocador (o por el invocador del invocador, y así sucesivamente.).

La salida del programa es:

¿Que pasó? ¡Se lanzo una excepción! FIN.

Nota: la excepción planteada puede cruzar la función y los límites del módulo, y viajar a través de la cadena de invocación buscando una cláusula except capaz de manejarla.

Si no existe tal cláusula, la excepción no se controla y Python resuelve el problema de la manera estándar - terminando el código y emitiendo un mensaje de diagnóstico.

Ahora vamos a suspender esta discusión, ya que queremos presentarte una nueva instrucción de Python.



Code

def badFun(n):
try:
return 1 / n
except ArithmeticError:
print("¡Problema aritmético!")
return None

badFun(0)

print("FIN.")
{{ dockerServerErrorMsg }} ×
{{ errorMsg }} ×
{{ successMsg }} ×