Todas as instâncias em Python devem ser instâncias de uma classe que deriva de BaseException . Duas classes de exceção que não estão relacionadas por meio de subclasses nunca são equivalentes, mesmo se tiverem o mesmo nome. As exceções integradas podem ser geradas pelo interpretador ou funções integradas.

Existem várias exceções integradas em Python que são geradas quando ocorrem erros. Essas exceções integradas podem ser visualizadas usando as funções integradas local() da seguinte maneira:

>>> locais() ['__ builtins__']

Isso retorna um dicionário de exceções, funções e atributos integrados.

Classes básicas

As seguintes exceções são usadas principalmente como classes base para outras exceções.



  1. exceção BaseException
    Esta é a classe base para todas as exceções internas . Ele não deve ser herdado diretamente por classes definidas pelo usuário. Para classes definidas pelo usuário, Exception é usado. Esta classe é responsável por criar uma representação string da exceção usando str() usando os argumentos passados. Uma string vazia é retornada se não houver argumentos.
    • args: os args são a tupla de argumentos fornecidos ao construtor de exceção.
    • with_traceback (tb): Este método é geralmente usado no tratamento de exceções. Este método define tb como o novo traceback para a exceção e retorna o objeto de exceção.

      Código:

      tentar:
          ...
      exceto SomeException:
          tb = sys.exc_info() [2]
          levantar OtherException (...). with_traceback (tb)
  2. exceção Exceção
    Esta é a classe base para todas as exceções integradas que não saem do sistema. Todas as exceções definidas pelo usuário também devem ser derivadas desta classe.
  3. exceção ArithmeticError
    Esta classe é a classe base para as exceções integradas que são geradas para vários erros aritméticos, como:
    • OverflowError
    • ZeroDivisionError
    • FloatingPointError

    Exemplo:

    filter_none

    editar
    fechar

    play_arrow

    link
    brilho_4
    código

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

    Resultado :

    Esta declaração está gerando uma exceção aritmética.
  4. exceção BufferError
    Esta exceção é gerada quando as operações relacionadas ao buffer não podem ser executadas.
  5. exceção LookupError
    Esta é a classe base para as exceções que são levantadas quando uma chave ou índice usado em um mapeamento ou sequência é inválido ou não foi encontrado. As exceções levantadas são:
    • KeyError
    • IndexError

    Exemplo:

    filter_none

    editar
    fechar

    play_arrow

    link
    brilho_4
    código

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

    Resultado :



    Erro de índice fora do limite.

Exceções concretas

As exceções a seguir são aquelas que geralmente são geradas.

  1. exceção AssertionError
    Um AssertionError é gerado quando uma instrução assert falha.

    Exemplo:

    assert False, 'A declaração falhou'

    Resultado :

    Traceback (última chamada mais recente):
      Arquivo "exceptions_AssertionError.py", linha 12, em
        assert False, 'A declaração falhou'
    AssertionError: a declaração falhou
  2. exceção AttributeError
    Um AttributeError é gerado quando uma referência de atributo ou atribuição falha, como quando um atributo inexistente é referenciado.

    Exemplo:

    filter_none

    editar
    fechar

    play_arrow

    link
    brilho_4
    código

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

    Resultado :

    Traceback (última chamada mais recente):
      Arquivo "d912bae549a2b42953bc62da114ae7a7.py", linha 5, em
        imprimir objeto.atributo
    AttributeError: o objeto 'Atributos' não tem nenhum atributo 'atributo'
  3. exceção EOFError
    Um EOFError é gerado quando funções integradas como input() atingem uma condição de fim de arquivo (EOF) sem ler nenhum dado. Os métodos de arquivo como readline() retornam uma string vazia quando atingem EOF.

    Exemplo:



    filter_none

    editar
    fechar

    play_arrow

    link
    brilho_4
    código

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

    Resultado :

    Digite o nome: Hello Aditi
    Digite o nome: Traceback (última chamada mais recente):
      Arquivo "exceptions_EOFError.py", linha 13, em
        data = raw_input ('Digite o nome:')
    EOFError: EOF ao ler uma linha
  4. exceção FloatingPointError
    Um FloatingPointError é gerado quando uma operação de ponto flutuante falha. Esta exceção é sempre definida, mas só pode ser gerada quando Python é configurado com a opção – with-fpectl ou o símbolo WANT_SIGFPE_HANDLER é definido no arquivo pyconfig.h.

    Exemplo:

    filter_none

    editar
    fechar

    play_arrow

    link
    brilho_4
    código

    import math
      
    print (math.exp(1000))
    chevron_right
    
    
    filter_none
    
    

    Resultado :

    Traceback (última chamada mais recente):
      Arquivo "", linha 1, em
    FloatingPointError: em math_1
  5. exceção GeneratorExit
    Esta exceção herda diretamente de BaseException em vez de Exception, pois tecnicamente não é um erro. Uma exceção GeneratorExit é gerada quando um gerador ou co-rotina é fechado.

    Exemplo:

    filter_none

    editar
    fechar

    play_arrow

    link
    brilho_4
    código

    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()
      
    chevron_right
    
    
    filter_none
    
    

    Resultado :

    Rendendo 0
    Saindo cedo
  6. exceção ImportError
    Um ImportError é gerado quando a instrução de importação não consegue carregar um módulo ou quando a “lista da” em de… importação tem um nome que não pode ser encontrado.

      Exemplo:

      filter_none

      editar
      fechar

      play_arrow

      link
      brilho_4
      código

      import module_does_not_exist
      chevron_right
      
      
      filter_none
      
      

      Resultado :



    Traceback (última chamada mais recente):
      Arquivo "exceptions_ImportError_nomodule.py", linha 12, em
        import module_does_not_exist
    ImportError: Nenhum módulo denominado module_does_not_exist
    

    Exemplo:

    filter_none

    editar
    fechar

    play_arrow

    link
    brilho_4
    código

    from exceptions import Userexception
    chevron_right
    
    
    filter_none
    
    

    Resultado :

    Traceback (última chamada mais recente):
      Arquivo "exceptions_ImportError_missingname.py", linha 12, em
        de exceções importar Userexception
    ImportError: não é possível importar o nome Userexception
    
  7. exceção ModuleNotFoundError
    Esta é a subclasse de ImportError que é gerada por import quando um módulo não pode ser encontrado. Ele também é gerado quando None é encontrado em sys.modules.
  8. exceção IndexError
    Um IndexError é gerado quando uma sequência é referenciada e está fora do intervalo.

    Exemplo:

    filter_none

    editar
    fechar

    play_arrow

    link
    brilho_4
    código

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

    Resultado :

    Traceback (última chamada mais recente):
      Arquivo "exceptions_IndexError.py", linha 13, em
        matriz de impressão [3]
    IndexError: índice da lista fora do intervalo
  9. exceção KeyError
    Um KeyError é gerado quando uma chave de mapeamento não é encontrada no conjunto de chaves existentes.

    Exemplo:

    filter_none

    editar
    fechar

    play_arrow

    link
    brilho_4
    código

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

    Resultado :

    Traceback (última chamada mais recente):
      Arquivo "exceptions_KeyError.py", linha 13, em
        matriz de impressão ['c']
    KeyError: 'c'
  10. exceção KeyboardInterrupt
    Este erro é gerado quando o usuário pressiona a tecla de interrupção, como Control-C ou Delete.

    Exemplo:

    filter_none

    editar
    fechar

    play_arrow

    link
    brilho_4
    código

    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')
    chevron_right
    
    
    filter_none
    
    

    Resultado :

    Pressione Return ou Ctrl-C: ^ CCaught KeyboardInterrupt
  11. exceção MemoryError
    Este erro é gerado quando uma operação fica sem memória.

    Exemplo:

    filter_none

    editar
    fechar

    play_arrow

    link
    brilho_4
    código

    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))
    chevron_right
    
    
    filter_none
    
    

    Resultado :

    Traceback (última chamada mais recente):
      Arquivo "4af5c316c749aff128df20714536b8f3.py", linha 9, em
        imprimir fato (num)
      Arquivo "4af5c316c749aff128df20714536b8f3.py", linha 3, na verdade
        para i no intervalo (1, a + 1):
    MemoryError
  12. exceção NameError
    Este erro é gerado quando um nome local ou global não é encontrado. Por exemplo, um nome de variável não qualificado.

    Exemplo:

    filter_none

    editar
    fechar

    play_arrow

    link
    brilho_4
    código

    def func():
        print ans
      
    func()
    chevron_right
    
    
    filter_none
    
    

    Resultado :

    Traceback (última chamada mais recente):
      Arquivo "cfba0a5196b05397e0a23b1b5b8c7e19.py", linha 4, em
        função()
      Arquivo "cfba0a5196b05397e0a23b1b5b8c7e19.py", linha 2, na função
        imprimir ans
    NameError: nome global 'ans' não está definido
  13. exceção NotImplementedError
    Esta exceção é derivada de RuntimeError. Métodos abstratos em classes definidas pelo usuário devem gerar esta exceção quando as classes derivadas substituem o método.

    Exemplo:



    filter_none

    editar
    fechar

    play_arrow

    link
    brilho_4
    código

    class BaseClass(object):
        
        def __init__(self):
            super(BaseClass, self).__init__()
        def do_something(self):
            
            raise NotImplementedError(self.__class__.__name__ + '.do_something')
      
    class SubClass(BaseClass):
        
        def do_something(self):
            
            print (self.__class__.__name__ + ' doing something!')
      
    SubClass().do_something()
    BaseClass().do_something()
    chevron_right
    
    
    filter_none
    
    

    Resultado :

    Traceback (última chamada mais recente):
      Arquivo "b32fc445850cbc23cd2f081ba1c1d60b.py", linha 16, em
        BaseClass(). Do_something()
      Arquivo "b32fc445850cbc23cd2f081ba1c1d60b.py", linha 7, em do_something
        aumentar NotImplementedError (self .__ class __.__ name__ + '.do_something')
    NotImplementedError: BaseClass.do_something
  14. exceção OSError ([arg])
    A exceção OSError é gerada quando uma função do sistema retorna um erro relacionado ao sistema, incluindo falhas de E / S, como erros de “arquivo não encontrado” ou “disco cheio”.

    Exemplo:

    filter_none

    editar
    fechar

    play_arrow

    link
    brilho_4
    código

    def func():
        print (ans)
      
    func()
    chevron_right
    
    
    filter_none
    
    

    Resultado :

    Traceback (última chamada mais recente):
      Arquivo "442eccd7535a2704adbe372cb731fc0f.py", linha 4, em
        imprimir i, os.ttyname (i)
    OSError: [Errno 25] ioctl inadequado para o dispositivo
  15. exceção OverflowError
    O OverflowError é gerado quando o resultado de uma operação aritmética está fora do intervalo. Os inteiros aumentam MemoryError em vez de OverflowError. OverflowError às vezes é gerado para inteiros que estão fora de um intervalo obrigatório. As operações de ponto flutuante não são verificadas devido à falta de padronização do tratamento de exceção de ponto flutuante em C.

    Exemplo:

    filter_none

    editar
    fechar

    play_arrow

    link
    brilho_4
    código

    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)
    chevron_right
    
    
    filter_none
    
    

    Resultado :

    Número inteiro regular: (maxint = 9223372036854775807)
    Sem estouro para i = 27670116110564327421
    Inteiro longo:
     0 1
    10 1024
    20 1048576
    30 1073741824
    40 1099511627776
    50 1125899906842624
    60 1152921504606846976
    70 1180591620717411303424
    80 1208925819614629174706176
    90 1237940039285380274899124224
    Valores de ponto flutuante:
    0 1.23794003929e + 27
    1 1.53249554087e + 54
    2 2.34854258277e + 108
    3 5.5156522631e + 216
    Transbordou após 5.5156522631e + 216 (34, 'Resultado numérico fora do intervalo')
    
  16. exceção RecursionError
    O RecursionError é derivado do RuntimeError. Essa exceção é gerada quando o interpretador detecta que a profundidade máxima de recursão foi excedida.
  17. exceção ReferenceError
    O ReferenceError é gerado quando um proxy de referência fraca é usado para acessar um atributo do referente após a coleta de lixo.

    Exemplo:

    filter_none

    editar
    fechar

    play_arrow

    link
    brilho_4
    código

    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)
    chevron_right
    
    
    filter_none
    
    

    Resultado :



    ANTES: obj
    (Excluindo)
    DEPOIS DE:
    Traceback (última chamada mais recente):
      Arquivo "49d0c29d8fe607b862c02f4e1cb6c756.py", linha 17, em
        imprimir 'DEPOIS:', p.nome
    ReferenceError: o objeto fracamente referenciado não existe mais
  18. exceção RuntimeError
    O RuntimeError é gerado quando nenhuma outra exceção se aplica. Ele retorna uma string indicando o que exatamente deu errado.
  19. exceção StopIteration
    O erro StopIteration é gerado pela função interna next() e pelo método __next __() de um iterador para sinalizar que todos os itens são produzidos pelo iterador.

    Exemplo:

    filter_none

    editar
    fechar

    play_arrow

    link
    brilho_4
    código

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

    Resultado :

    3
    1
    2
    Traceback (última chamada mais recente):
      Arquivo "2136fa9a620e14f8436bb60d5395cc5b.py", linha 8, em
        imprimir i.next()
    StopIteration
  20. exceção SyntaxError
    O SyntaxError é gerado quando o analisador encontra um erro de sintaxe. Um erro de sintaxe pode ocorrer em uma instrução de importação ou ao chamar as funções internas exec() ou eval(), ou ao ler o script inicial ou a entrada padrão.

    Exemplo:

    filter_none

    editar
    fechar

    play_arrow

    link
    brilho_4
    código

    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)
    chevron_right
    
    
    filter_none
    
    

    Resultado :

    Erro de sintaxe (1-9): geeks para geeks
    sintaxe inválida (linha 1)
  21. exceção SystemError
    O SystemError é gerado quando o interpretador encontra um erro interno. O valor associado é uma string que indica o que deu errado.
  22. exceção SystemExit
    O SystemExit é gerado quando a função sys.exit() é chamada. Uma chamada para sys.exit() é traduzida em uma exceção para executar manipuladores de limpeza (cláusulas finalmente de instruções try) e para depurar um script sem correr o risco de perder o controle.
  23. exceção TypeError
    TypeError é gerado quando uma operação ou função é aplicada a um objeto de tipo inadequado. Esta exceção retorna uma string com detalhes sobre a incompatibilidade de tipo.

    Exemplo:

    filter_none

    editar
    fechar

    play_arrow

    link
    brilho_4
    código

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

    Resultado :



    Traceback (última chamada mais recente):
      Arquivo "30238c120c0868eba7e13a06c0b1b1e4.py", linha 1, em
        arr = ('tupla',) + 'string'
    TypeError: só pode concatenar tupla (não "str") para tupla
  24. exceção UnboundLocalError
    UnboundLocalError é uma subclasse de NameError que é gerada quando uma referência é feita a uma variável local em uma função ou método, mas nenhum valor foi atribuído a essa variável.

    Exemplo:

    filter_none

    editar
    fechar

    play_arrow

    link
    brilho_4
    código

    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)
    chevron_right
    
    
    filter_none
    
    

    Resultado :

    Erro de nome global: o nome global 'unknown_global_name' não foi definido
    Erro de nome local: variável local 'local_val' referenciada antes da atribuição
  25. exceção UnicodeError
    Esta exceção é uma subclasse de ValueError. UnicodeError é gerado quando ocorre um erro de codificação ou decodificação relacionado a Unicode.
  26. exceção ValueError
    Um ValueError é gerado quando uma operação ou função interna recebe um argumento que tem o tipo correto, mas um valor inválido.

    Exemplo:

    filter_none

    editar
    fechar

    play_arrow

    link
    brilho_4
    código

    print (int('a'))
    chevron_right
    
    
    filter_none
    
    

    Resultado :

    Traceback (última chamada mais recente):
      Arquivo "44f00efda935715a3c5468d899080381.py", linha 1, em
        print int ('a')
    ValueError: literal inválido para int() com base 10: 'a'
  27. exceção ZeroDivisionError
    Um ZeroDivisionError é gerado quando o segundo argumento de uma divisão ou operação de módulo é zero. Esta exceção retorna uma string que indica o tipo dos operandos e a operação.

    Exemplo:

    filter_none

    editar
    fechar

    play_arrow

    link
    brilho_4
    código

    print (1/0)
    chevron_right
    
    
    filter_none
    
    

    Resultado :

    Traceback (última chamada mais recente):
      Arquivo "c31d9626b41e53d170a78eac7d98cb85.py", linha 1, em
        imprimir 1/0
    ZeroDivisionError: divisão inteira ou módulo por zero

Este artigo é uma contribuição de Aditi Gupta . Se você gosta de GeeksforGeeks e gostaria de contribuir, você também pode escrever um artigo usando contribute.geeksforgeeks.org ou enviar o seu artigo para contribute@geeksforgeeks.org. Veja o seu artigo que aparece na página principal do GeeksforGeeks e ajude outros Geeks.

Escreva comentários se encontrar algo incorreto ou se quiser compartilhar mais informações sobre o tópico discutido acima.