Sintaxe - Tratamento de 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
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
0 Comentários