Hemos explorado Python básico hasta ahora desde el Conjunto 1 al 4 ( Conjunto 1 | Conjunto 2 | Conjunto 3 | Conjunto 4 ).
En este artículo, discutiremos cómo manejar excepciones en Python usando try. catch, y finalmente declaración con la ayuda de ejemplos apropiados.
El error en Python puede ser de dos tipos, es decir, errores de sintaxis y excepciones . Los errores son los problemas en un programa debido a que el programa detendrá la ejecución. Por otro lado, se generan excepciones cuando ocurren algunos eventos internos que cambian el flujo normal del programa.
Diferencia entre error de sintaxis y excepciones
Error de sintaxis: como sugiere el nombre, este error se debe a una sintaxis incorrecta en el código. Conduce a la terminación del programa.
Ejemplo:
Python3
# initialize the amount variable amount = 10000 # check that You are eligible to # purchase Dsa Self Paced or not if(amount > 2999) print("You are eligible to purchase Dsa Self Paced")
Producción:
Excepciones: se generan excepciones cuando el programa es sintácticamente correcto, pero el código resultó en un error. Este error no detiene la ejecución del programa, sin embargo, cambia el flujo normal del programa.
Ejemplo:
Python3
# initialize the amount variable marks = 10000 # perform division with 0 a = marks / 0 print(a)
Producción:
En el ejemplo anterior, se generó ZeroDivisionError ya que estamos tratando de dividir un número por 0.
Nota: Exception es la clase base para todas las excepciones en Python. Puede consultar la jerarquía de excepciones aquí .
Instrucción Try and Except: detección de excepciones
Las declaraciones Try y Except se utilizan para capturar y manejar excepciones en Python. Las declaraciones que pueden generar excepciones se mantienen dentro de la cláusula try y las declaraciones que manejan la excepción se escriben dentro de la cláusula excepto.
Ejemplo: Intentemos acceder al elemento de la array cuyo índice está fuera de límite y manejar la excepción correspondiente.
Python3
# Python program to handle simple runtime error #Python 3 a = [1, 2, 3] try: print ("Second element = %d" %(a[1])) # Throws error since there are only 3 elements in array print ("Fourth element = %d" %(a[3])) except: print ("An error occurred")
Second element = 2 An error occurred
En el ejemplo anterior, las declaraciones que pueden causar el error se colocan dentro de la declaración de prueba (segunda declaración de impresión en nuestro caso). La segunda declaración de impresión intenta acceder al cuarto elemento de la lista que no está allí y esto arroja una excepción. Luego, esta excepción es capturada por la declaración de excepción.
Captura de una excepción específica
Una declaración de prueba puede tener más de una cláusula excepto, para especificar controladores para diferentes excepciones. Tenga en cuenta que se ejecutará como máximo un controlador. Por ejemplo, podemos agregar IndexError en el código anterior. La sintaxis general para agregar excepciones específicas es:
try: # statement(s) except IndexError: # statement(s) except ValueError: # statement(s)
Ejemplo: captura de una excepción específica en Python
Python3
# Program to handle multiple errors with one # except statement # Python 3 def fun(a): if a < 4: # throws ZeroDivisionError for a = 3 b = a/(a-3) # throws NameError if a >= 4 print("Value of b = ", b) try: fun(3) fun(5) # note that braces () are necessary here for # multiple exceptions except ZeroDivisionError: print("ZeroDivisionError Occurred and Handled") except NameError: print("NameError Occurred and Handled")
ZeroDivisionError Occurred and Handled
Si comentas en la línea fun(3), la salida será
NameError Occurred and Handled
El resultado anterior es así porque tan pronto como Python intenta acceder al valor de b, se produce NameError.
Prueba con la cláusula Else
En python, también puede usar la cláusula else en el bloque try-except que debe estar presente después de todas las cláusulas excepto. El código ingresa al bloque else solo si la cláusula try no genera una excepción.
Ejemplo: prueba con la cláusula else
Python3
# Program to depict else clause with try-except # Python 3 # Function which returns a/b def AbyB(a , b): try: c = ((a+b) / (a-b)) except ZeroDivisionError: print ("a/b result in 0") else: print (c) # Driver program to test above function AbyB(2.0, 3.0) AbyB(3.0, 3.0)
Producción:
-5.0 a/b result in 0
Finalmente palabra clave en Python
Python proporciona una palabra clave finalmente , que siempre se ejecuta después de los bloques try y except. El bloque final siempre se ejecuta después de la finalización normal del bloque de prueba o después de que finaliza el bloque de prueba debido a alguna excepción.
Sintaxis:
try: # Some Code.... except: # optional block # Handling of exception (if required) else: # execute if no exception finally: # Some code .....(always executed)
Ejemplo:
Python3
# Python program to demonstrate finally # No exception Exception raised in try block try: k = 5//0 # raises divide by zero exception. print(k) # handles zerodivision exception except ZeroDivisionError: print("Can't divide by zero") finally: # this block is always executed # regardless of exception generation. print('This is always executed')
Producción:
Can't divide by zero This is always executed
Excepción de generación
La declaración de aumento permite al programador forzar que ocurra una excepción específica. El único argumento de raise indica la excepción que se va a generar. Debe ser una instancia de excepción o una clase de excepción (una clase que se deriva de Exception).
Python3
# Program to depict Raising Exception try: raise NameError("Hi there") # Raise Error except NameError: print ("An exception") raise # To determine whether the exception was raised or not
La salida del código anterior simplemente se imprimirá como «Una excepción», pero también se producirá un error de tiempo de ejecución en el último debido a la declaración de aumento en la última línea. Entonces, la salida en su línea de comando se verá así
Traceback (most recent call last): File "/home/d6ec14ca595b97bff8d8034bbf212a9f.py", line 5, in <module> raise NameError("Hi there") # Raise Error NameError: Hi there
Este artículo es una contribución de Nikhil Kumar Singh (nickzuck_007)
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA