Vamos aprender como podemos lidar com exceções ou erros em Python e também nos concentraremos em certos tipos de erros que podemos obter na linguagem de programação Python.

Sintaxe - Tratamento de exceções em Python

Se pudermos detectar um erro, podemos escrever código para tratá-lo. Um erro não detectado irá travar nosso programa.
Python tem a seguinte sintaxe para lidar com exceções em Python.

 

try:

    #código a ser executado

except:

    #código a ser executado se ocorrer um erro

else:

    #código a ser executado se não houver erros

finally:

    #código para ser executado em todos os casos

 


Podemos manter nosso código dentro de um bloco colocado dentro de try e depois manter outro bloco de código, sobre except para manipular em caso de erro. Se o código dentro do bloco try gerar um erro, o bloco de código dentro do except será executado. Se não houver erro, então o código sobre o except não será executado.

Manipulação de erros do Python usando try e except

 

lista = ['Joao','Futi','Muanda']

 

try:

    print(lista[3]) # 3º elemento não existe

except :

    print ("ocorreu algum erro ")

 


Resultado:

—---------------------------------------

ocorreu algum erro


Agora vamos tentar pegar qualquer tipo de erro e exibir a mensagem retornada pelo sistema.

a = 5

b = 0

try:

  print(a/b)

except Exception as e:

  print(e)  

except:

  print('Olá, há um erro')

 

Resultado:

—---------------------------------------

division by zero

Podemos detectar algum erro específico e exibir a mensagem apropriada. Se você está tentando capturar algum erro específico, esse bloco de código deve estar acima do bloco genérico de manipulação de exceção.


 

lista = ['Joao', 'Futi', 'Muanda']

 

try:

    print(lista[3])  # 3º elemento não existe

except IndexError:

    print("ocorreu IndexError ( erro de índice)")

except:

    print("ocorreu algum erro ")

 

Resultado:

—---------------------------------------

ocorreu IndexError ( erro de índice)

Manipulação de erros do Python usando try, except e finally

O bloco de código dentro do bloco de código finally é executado em todas as condições (erro ou sem erro).


 

lista = ['Joao', 'Futi', 'Muanda']

 

try:

    print(lista[3])  # 3º elemento não existe

except IndexError:

    print("ocorreu IndexError ( erro de indice)")

except:

    print("ocorreu algum erro ")

finally :

    print ( "Sempre serei executado " )

 

Resultado:

—---------------------------------------

ocorreu IndexError ( erro de indice)

Sempre serei executado


Manipulação de erros do Python usando try , except e else

Se não houver erro, o bloco de código dentro do else será executado.

lista = ['Joao', 'Futi', 'Muanda']

 

try:

    print(lista[1])  # 3º elemento não existe

except IndexError:

    print("ocorreu IndexError ( erro de indice)")

except:

    print("ocorreu algum erro ")

else :

    print ( "dentro da condição else")

Resultado:

—---------------------------------------

Futi

dentro da condição els


Manipulação de erros do Python usando try , except , else e finally


 

lista = ['Joao', 'Futi', 'Muanda']

 

try:

    print(lista[2])  # 3º elemento não existe

except IndexError:

    print("ocorreu IndexError ( erro de indice)")

except:

    print("ocorreu algum erro ")

else :

    print ( "dentro da condição else")

finally :

    print ( "Sempre serei executado " )

 

Resultado:

—---------------------------------------

Muanda

dentro da condição else

Sempre serei executado


Exemplo pratico de tratamento de erros e exceções em Python

Vamos separar a parte inteira de uma string.

frase = "Python é usado por mais de 50 pessoas a cada 11 horas "

 

# Cria uma lista usando o método de string dividida

lista = frase.split()

for i in lista:      # iterating through list

    try:

        # Gera erro se i não for um número

        r = 1/int(i)

        print("O número é : ", i)

    except:

        # Imprime apenas se for inteiro

        print(i, " : não é um número.")

 


Resultado:

—---------------------------------------

Python  : não é um número.

é  : não é um número.

usado  : não é um número.

por  : não é um número.

mais  : não é um número.

de  : não é um número.

O número é :  50

pessoas  : não é um número.

a  : não é um número.

cada  : não é um número.

O número é :  11

horas  : não é um número.


Lista de exceções de erros do Python

Existem alguns erros comuns que geralmente são gerados durante a execução. Uma lista de exceções conhecidas integradas está disponível em Python. Podemos usá-los e lidar com soluções específicas com base no tipo de exceção.

AssertionError : Quando uma condição for falsa ao usar assert

try:

    assert 5 == 6

    print("Nenhum erro em Tentar")

except AssertionError as error:

    print ("Este é um AssertionError")

except:

    print ("Ocorreu algum outro erro")  


Resultado:

—---------------------------------------

Este é um AssertionError


AttributeError : Quando o método Nonexistence é chamado.


EOFError : Quando qualquer função de entrada alcança o final do arquivo

FloatingPointError Quando qualquer opção de ponto flutuante falha.

GeneratorExit : Quando o método close é do gerador é chamado

ImportError : Quando o módulo de importação não é encontrado

IndexError : Quando o elemento no índice não é encontrado

KeyError : Quando acessada A chave não está presente em um dicionário

KeyboardInterrupt : Quando o processo é interrompido pelo teclado ( Ctrl + C )

MemoryError
: Quando o processo fica sem memória

NameError : Quando a variável acessada não é encontrada

NotImplementedError : Quando métodos abstratos geram essa exceção

OSError : Quando o sistema operacional levantou erro

OverflowError : Quando o resultado é muito grande para lidar

ReferenceError : Quando um proxy de referência fraco, criado pela função fracoref.proxy()

RuntimeError : Que não se enquadra em nenhuma das outras categorias

StopIteration : Quando next() não tem nenhum elemento para retornar

SyntaxError : Quando um erro de sintaxe é encontrado pelo compilador

IndentationError : Quando há um erro de recuo

TabError : Quando existe indentação de inconsistência

SystemError : Interpreter gera erro interno

SystemExit : Quando sys.exit() gera o erro

TypeError : When When Quando o objeto tem o tipo de dados errado

UnboundLocalError : Quando uma variável local é referenciada antes da atribuição

UnicodeError : Quando ocorre um erro de decodificação de codificação Unicode

UnicodeEncodeError : Quando não é possível codificar o caractere Unicode

UnicodeDecodeError : Quando não é possível decodificar o caractere Unicode

UnicodeTranslateError
: Quando ocorre um erro de Unicode durante a tradução.

ValueError
: Quando um argumento de valor incorreto para usar

ZeroDivisionError : Quando o denominador de uma divisão ou operação de módulo é zero