Excepciones integradas en Python

Todas las instancias en Python deben ser instancias de una clase que se derive de BaseException . Dos clases de excepción que no están relacionadas a través de subclases nunca son equivalentes, incluso si tienen el mismo nombre. Las excepciones integradas pueden ser generadas por el intérprete o funciones integradas.

Hay varias excepciones integradas en Python que se generan cuando se producen errores. Estas excepciones integradas se pueden ver usando las funciones integradas local() de la siguiente manera:

>>> locals()['__builtins__']

Esto devuelve un diccionario de excepciones, funciones y atributos incorporados.

Clases base

Las siguientes excepciones se utilizan principalmente como clases base para otras excepciones.

  1. excepción BaseException
    Esta es la clase base para todas las excepciones integradas. No está destinado a ser heredado directamente por clases definidas por el usuario. Para las clases definidas por el usuario, se utiliza Exception. Esta clase es responsable de crear una representación de string de la excepción usando str() usando los argumentos pasados. Se devuelve una string vacía si no hay argumentos.
    • args : Los args son la tupla de argumentos dados al constructor de excepciones.
    • with_traceback(tb) : este método generalmente se usa en el manejo de excepciones. Este método establece tb como el nuevo rastreo para la excepción y devuelve el objeto de excepción.

      Código:

      try:
          ...
      except SomeException:
          tb = sys.exc_info()[2]
          raise OtherException(...).with_traceback(tb)
      
  2. excepción Excepción
    Esta es la clase base para todas las excepciones integradas que no salen del sistema. Todas las excepciones definidas por el usuario también deben derivarse de esta clase.
  3. excepción ArithmeticError
    Esta clase es la clase base para las excepciones integradas que se generan para varios errores aritméticos como:
    • OverflowError
    • Error de división cero
    • Error de punto flotante

    Ejemplo :

    try:  
        a = 10/0  
        print (a)
    except ArithmeticError:  
            print ("This statement is raising an arithmetic exception.")
    else:  
        print ("Success.")

    Producción :

    This statement is raising an arithmetic exception.
    
  4. excepción BufferError
    Esta excepción se genera cuando no se pueden realizar operaciones relacionadas con el búfer.
  5. excepción LookupError
    Esta es la clase base para aquellas excepciones que se generan cuando una clave o índice utilizado en un mapeo o secuencia no es válido o no se encuentra. Las excepciones planteadas son:
    • Error de clave
    • IndexError

    Ejemplo :

    try
        a = [1, 2, 3
        print (a[3]) 
    except LookupError: 
        print ("Index out of bound error.")
    else
        print ("Success")
      

    Producción :

    Index out of bound error.
    

Excepciones concretas

Las siguientes excepciones son las excepciones que generalmente se plantean.

  1. excepción AssertionError
    Se genera un AssertionError cuando falla una declaración de afirmación.

    Ejemplo :

    assert False, 'The assertion failed'
    

    Producción :

    Traceback (most recent call last):
      File "exceptions_AssertionError.py", line 12, in 
        assert False, 'The assertion failed'
    AssertionError: The assertion failed
    
  2. excepción AttributeError
    Se genera un AttributeError cuando falla una referencia o asignación de atributo, como cuando se hace referencia a un atributo inexistente.

    Ejemplo :

    class Attributes(object):
        pass
      
    object = Attributes()
    print (object.attribute)

    Producción :

    Traceback (most recent call last):
      File "d912bae549a2b42953bc62da114ae7a7.py", line 5, in 
        print object.attribute
    AttributeError: 'Attributes' object has no attribute 'attribute'
    
  3. excepción EOFError
    Se genera un EOFError cuando funciones integradas como input() alcanzan una condición de fin de archivo (EOF) sin leer ningún dato. Los métodos de archivo como readline() devuelven una string vacía cuando llegan a EOF.

    Ejemplo :

    while True:
        data = input('Enter name : ')
        print ('Hello  ', data)

    Producción :

    Enter Name :Hello Aditi
    Enter Name :Traceback (most recent call last):
      File "exceptions_EOFError.py", line 13, in 
        data = raw_input('Enter name :')
    EOFError: EOF when reading a line
    
  4. excepción FloatingPointError
    Se genera un FloatingPointError cuando falla una operación de coma flotante. Esta excepción siempre se define, pero solo se puede generar cuando Python está configurado con la opción –with-fpectl, o el símbolo WANT_SIGFPE_HANDLER está definido en el archivo pyconfig.h.

    Ejemplo :

    import math
      
    print (math.exp(1000))

    Producción :

    Traceback (most recent call last):
      File "", line 1, in 
    FloatingPointError: in math_1
    
  5. excepción GeneratorExit
    Esta excepción hereda directamente de BaseException en lugar de Exception ya que técnicamente no es un error. Se genera una excepción GeneratorExit cuando se cierra un generador o una corrutina.

    Ejemplo :

    def my_generator():
        try:
            for i in range(5):
                print ('Yielding', i)
                yield i
        except GeneratorExit:
            print ('Exiting early')
      
    g = my_generator()
    print (g.next())
    g.close()
      

    Producción :

    Yielding 0
    0
    Exiting early
    
  6. excepción ImportError
    Se genera un ImportError cuando la declaración de importación no puede cargar un módulo o cuando la «lista de origen» en la importación de… tiene un nombre que no se puede encontrar.

      Ejemplo :

      import module_does_not_exist

      Producción :

    Traceback (most recent call last):
      File "exceptions_ImportError_nomodule.py", line 12, in 
        import module_does_not_exist
    ImportError: No module named module_does_not_exist
    
    

    Ejemplo :

    from exceptions import Userexception

    Producción :

    Traceback (most recent call last):
      File "exceptions_ImportError_missingname.py", line 12, in 
        from exceptions import Userexception
    ImportError: cannot import name Userexception
    
    
  7. excepción ModuleNotFoundError
    Esta es la subclase de ImportError que se genera al importar cuando no se pudo encontrar un módulo. También se genera cuando se encuentra Ninguno en sys.modules.
  8. excepción IndexError
    Se genera un IndexError cuando se hace referencia a una secuencia que está fuera de rango.

    Ejemplo :

    array = [ 0, 1, 2 ]
    print (array[3])

    Producción :

    Traceback (most recent call last):
      File "exceptions_IndexError.py", line 13, in 
        print array[3]
    IndexError: list index out of range
    
  9. excepción KeyError
    Se genera un KeyError cuando no se encuentra una clave de asignación en el conjunto de claves existentes.

    Ejemplo :

    array = { 'a':1, 'b':2 }
    print (array['c'])

    Producción :

    Traceback (most recent call last):
      File "exceptions_KeyError.py", line 13, in 
        print array['c']
    KeyError: 'c'
    
  10. excepción KeyboardInterrupt
    Este error se genera cuando el usuario presiona la tecla de interrupción, como Control-C o Eliminar.

    Ejemplo :

    try:
        print ('Press Return or Ctrl-C:',)
        ignored = input()
    except Exception, err:
        print ('Caught exception:', err)
    except KeyboardInterrupt, err:
        print ('Caught KeyboardInterrupt')
    else:
        print ('No exception')

    Producción :

    Press Return or Ctrl-C: ^CCaught KeyboardInterrupt
    
  11. excepción MemoryError
    Este error se genera cuando una operación se queda sin memoria.

    Ejemplo :

    def fact(a):
        factors = []
        for i in range(1, a+1):
            if a%i == 0:
                factors.append(i)
        return factors 
      
    num = 600851475143
    print (fact(num))

    Producción :

    Traceback (most recent call last):
      File "4af5c316c749aff128df20714536b8f3.py", line 9, in 
        print fact(num)
      File "4af5c316c749aff128df20714536b8f3.py", line 3, in fact
        for i in range(1, a+1):
    MemoryError
    
  12. excepción NameError
    Este error se genera cuando no se encuentra un nombre local o global. Por ejemplo, un nombre de variable no calificado.

    Ejemplo :

    def func():
        print ans
      
    func()

    Producción :

    Traceback (most recent call last):
      File "cfba0a5196b05397e0a23b1b5b8c7e19.py", line 4, in 
        func()
      File "cfba0a5196b05397e0a23b1b5b8c7e19.py", line 2, in func
        print ans
    NameError: global name 'ans' is not defined
    
  13. excepción NotImplementedError
    Esta excepción se deriva de RuntimeError. Los métodos abstractos en clases definidas por el usuario deben generar esta excepción cuando las clases derivadas anulan el método.

    Ejemplo :

    class BaseClass(object):
        """Defines the interface"""
        def __init__(self):
            super(BaseClass, self).__init__()
        def do_something(self):
            """The interface, not implemented"""
            raise NotImplementedError(self.__class__.__name__ + '.do_something')
      
    class SubClass(BaseClass):
        """Implements the interface"""
        def do_something(self):
            """really does something"""
            print (self.__class__.__name__ + ' doing something!')
      
    SubClass().do_something()
    BaseClass().do_something()

    Producción :

    Traceback (most recent call last):
      File "b32fc445850cbc23cd2f081ba1c1d60b.py", line 16, in 
        BaseClass().do_something()
      File "b32fc445850cbc23cd2f081ba1c1d60b.py", line 7, in do_something
        raise NotImplementedError(self.__class__.__name__ + '.do_something')
    NotImplementedError: BaseClass.do_something
    
  14. excepción OSError([arg])
    La excepción OSError se genera cuando una función del sistema devuelve un error relacionado con el sistema, incluidas fallas de E/S como errores de «archivo no encontrado» o «disco lleno».

    Ejemplo :

    def func():
        print (ans)
      
    func()

    Producción :

    Traceback (most recent call last):
      File "442eccd7535a2704adbe372cb731fc0f.py", line 4, in 
        print i, os.ttyname(i)
    OSError: [Errno 25] Inappropriate ioctl for device
    
  15. excepción OverflowError
    OverflowError se genera cuando el resultado de una operación aritmética está fuera de rango. Los enteros generan MemoryError en lugar de OverflowError. OverflowError a veces se genera para números enteros que están fuera de un rango requerido. Las operaciones de coma flotante no se verifican debido a la falta de estandarización del manejo de excepciones de coma flotante en C.

    Ejemplo :

    import sys
      
    print ('Regular integer: (maxint=%s)' % sys.maxint)
    try:
        i = sys.maxint * 3
        print ('No overflow for ', type(i), 'i =', i)
    except OverflowError, err:
        print ('Overflowed at ', i, err)
      
    print()
    print ('Long integer:')
    for i in range(0, 100, 10):
        print ('%2d' % i, 2L ** i)
      
    print()
    print ('Floating point values:')
    try:
        f = 2.0**i
        for i in range(100):
            print (i, f)
            f = f ** 2
    except OverflowError, err:
        print ('Overflowed after ', f, err)

    Producción :

    Regular integer: (maxint=9223372036854775807)
    No overflow for   i = 27670116110564327421
    
    Long integer:
     0 1
    10 1024
    20 1048576
    30 1073741824
    40 1099511627776
    50 1125899906842624
    60 1152921504606846976
    70 1180591620717411303424
    80 1208925819614629174706176
    90 1237940039285380274899124224
    
    Floating point values:
    0 1.23794003929e+27
    1 1.53249554087e+54
    2 2.34854258277e+108
    3 5.5156522631e+216
    Overflowed after  5.5156522631e+216 (34, 'Numerical result out of range')
    
    
  16. excepción RecursionError
    RecursionError se deriva de RuntimeError. Esta excepción se genera cuando el intérprete detecta que se excede la profundidad de recursión máxima.
  17. excepción ReferenceError
    El ReferenceError se genera cuando se utiliza un proxy de referencia débil para acceder a un atributo del referente después de la recolección de elementos no utilizados.

    Ejemplo :

    import gc
    import weakref
      
    class Foo(object):
      
        def __init__(self, name):
            self.name = name
          
        def __del__(self):
            print ('(Deleting %s)' % self)
      
    obj = Foo('obj')
    p = weakref.proxy(obj)
      
    print ('BEFORE:', p.name)
    obj = None
    print ('AFTER:', p.name)

    Producción :

    BEFORE: obj
    (Deleting )
    AFTER:
    
    Traceback (most recent call last):
      File "49d0c29d8fe607b862c02f4e1cb6c756.py", line 17, in 
        print 'AFTER:', p.name
    ReferenceError: weakly-referenced object no longer exists
    
  18. excepción RuntimeError
    RuntimeError se genera cuando no se aplica ninguna otra excepción. Devuelve una string que indica qué fue exactamente lo que salió mal.
  19. excepción StopIteration
    El error StopIteration lo genera la función integrada next() y el método __next__() de un iterador para señalar que el iterador produce todos los elementos.

    Ejemplo :

    Arr = [3, 1, 2]
    i=iter(Arr)
      
    print (i)
    print (i.next())
    print (i.next())
    print (i.next())
    print (i.next())

    Producción :

    3
    1
    2
    
    Traceback (most recent call last):
      File "2136fa9a620e14f8436bb60d5395cc5b.py", line 8, in 
        print i.next()
    StopIteration
    
  20. excepción SyntaxError
    SyntaxError se genera cuando el analizador encuentra un error de sintaxis. Puede ocurrir un error de sintaxis en una declaración de importación o al llamar a las funciones integradas exec() o eval(), o al leer el script inicial o la entrada estándar.

    Ejemplo :

    try:
        print (eval('geeks for geeks'))
    except SyntaxError, err:
        print ('Syntax error %s (%s-%s): %s' % \
            (err.filename, err.lineno, err.offset, err.text))
        print (err)

    Producción :

    Syntax error  (1-9): geeks for geeks
    invalid syntax (, line 1)
    
  21. excepción SystemError
    El SystemError se genera cuando el intérprete encuentra un error interno. El valor asociado es una string que indica qué salió mal.
  22. excepción SystemExit
    SystemExit se genera cuando se llama a la función sys.exit(). Una llamada a sys.exit() se traduce en una excepción para ejecutar controladores de limpieza (finally cláusulas de sentencias try) y para depurar un script sin correr el riesgo de perder el control.
  23. excepción TypeError
    TypeError se genera cuando se aplica una operación o función a un objeto de tipo inapropiado. Esta excepción devuelve una string que brinda detalles sobre la discrepancia de tipos.

    Ejemplo :

    arr = ('tuple', ) + 'string'
    print (arr)

    Producción :

    Traceback (most recent call last):
      File "30238c120c0868eba7e13a06c0b1b1e4.py", line 1, in 
        arr = ('tuple', ) + 'string'
    TypeError: can only concatenate tuple (not "str") to tuple
    
  24. excepción UnboundLocalError
    UnboundLocalError es una subclase de NameError que se genera cuando se hace una referencia a una variable local en una función o método, pero no se ha asignado ningún valor a esa variable.

    Ejemplo :

    def global_name_error():
        print (unknown_global_name)
      
    def unbound_local():
        local_val = local_val + 1
        print (local_val)
      
    try:
        global_name_error()
    except NameError, err:
        print ('Global name error:', err)
      
    try:
        unbound_local()
    except UnboundLocalError, err:
        print ('Local name error:', err)

    Producción :

    Global name error: global name 'unknown_global_name' is not defined
    Local name error: local variable 'local_val' referenced before assignment
    
  25. excepción UnicodeError
    Esta excepción es una subclase de ValueError. UnicodeError se genera cuando se produce un error de codificación o decodificación relacionado con Unicode.
  26. excepción ValueError
    Se genera un ValueError cuando una operación o función integrada recibe un argumento que tiene el tipo correcto pero un valor no válido.

    Ejemplo :

    print (int('a'))

    Producción :

    Traceback (most recent call last):
      File "44f00efda935715a3c5468d899080381.py", line 1, in 
        print int('a')
    ValueError: invalid literal for int() with base 10: 'a'
    
  27. excepción ZeroDivisionError
    Se genera un ZeroDivisionError cuando el segundo argumento de una operación de división o módulo es cero. Esta excepción devuelve una string que indica el tipo de los operandos y la operación.

    Ejemplo :

    print (1/0)

    Producción :

    Traceback (most recent call last):
      File "c31d9626b41e53d170a78eac7d98cb85.py", line 1, in 
        print 1/0
    ZeroDivisionError: integer division or modulo by zero
    

Este artículo es una contribución de Aditi Gupta . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *