Uma exceção é um evento que surge durante a execução de um programa para encerrar ou alterar o fluxo normal de um programa. Um erro, por exemplo, levanta uma exceção. Como outras linguagens de programação, Python contém muitas exceções integradas. Essas exceções são levantadas se um erro for encontrado quando o programa for executado. O tipo de erro determina qual exceção deve ser levantada. Quando ocorre uma exceção, o interpretador Python verifica se a exceção foi tratada; se não, ele encerra o programa. Este artigo explica as exceções em Python por meio de vários exemplos.
Exceções Python integradas
Conforme discutido anteriormente, Python tem muitas exceções integradas que são levantadas quando ocorre um erro durante a execução de um programa. Cada exceção é derivada de uma classe base de "Exceção". O seguinte inclui algumas exceções integradas do Python, junto com uma breve descrição de cada tipo de exceção:
Exceção | Descrição |
---|---|
Exceção | Cada exceção é derivada desta classe. |
ImportError | Esta exceção é gerada quando um módulo específico é importado e não é encontrado. |
EOFError | Esta é a exceção de fim de arquivo. Esta exceção ocorre quando o final do arquivo é alcançado. |
ZeroDivisionError | Esta exceção é levantada quando um número é dividido por zero. |
KeyError | Esta exceção é levantada se uma certa chave que não está definida dentro de um dicionário é especificada ou usada. |
IndexError | Esta exceção é gerada quando o acesso a um índice de sequência que não está no intervalo foi tentado. |
FloatingPointError | Esta exceção é gerada quando uma operação de ponto flutuante falha. |
Estas são algumas das exceções integradas em Python. Visite a documentação oficial para obter mais informações sobre o uso de exceções integradas em Python, localizada em https: // docs.Pitão.org / 3 / library / exceptions.html.
Uso de exceção em Python
As exceções em Python são tratadas usando a instrução try. O trecho de código que pode lançar ou levantar uma exceção é implementado em um bloco try. Ao lado do bloco try, um bloco except é implementado para lidar com a exceção. No bloco except, pegamos a exceção e decidimos qual operação realizar quando encontramos essa exceção particular. A sintaxe para escrever os blocos try e except é a seguinte:
tentar:realizar a operação ou função
exceto:
funcionalidade para lidar com a exceção
Agora, vamos implementar um código simples em nosso script Python usando os blocos try e except.
Aqui, imprimiremos uma variável 'nome' que não está definida. Isso levanta uma exceção no bloco exceto.
#implementando o bloco trytentar:
imprimir (nome)
#implementando o bloco except
exceto:
imprimir ("Ocorreu uma exceção")
Resultado
Se nenhuma exceção ocorrer, apenas o bloco try é executado. No bloco except, é impressa uma declaração de que ocorreu uma exceção.
Vejamos outro exemplo em que definimos a variável de nome:
# definindo a variável de nomenome = "marca"
#implementando o bloco try
tentar:
imprimir (nome)
#implementando o bloco except
exceto:
imprimir ("Ocorreu uma exceção")
Resultado
No exemplo acima, o bloco try é executado e o bloco except é ignorado porque o programa não levanta quaisquer exceções. Podemos definir tantos blocos exceto em nosso programa quanto quisermos. Cada bloco exceto lida com um tipo específico de exceção.
#implementando o bloco trytentar:
imprimir (nome)
#implementar o bloco except para detectar o erro de nome
exceto NameError:
print ("A variável não está definida")
#implementando o bloco except
exceto:
print ("Algo deu errado, exceto erro de nome")
Resultado
Em Python, Exception é a classe base para todas as exceções. Em vez de escrever o nome de uma exceção específica no bloco except, podemos simplesmente escrever "Exception" e capturar todos os tipos de exceção desta forma.
#implementando o bloco trytentar:
imprimir (nome)
#implementar o bloco except para detectar o erro
exceto Exceção como exp:
imprimir (exp.__aula__)
#implementando o bloco except
exceto:
print ("Algo deu errado, exceto erro de nome")
Resultado
O exp.__class__ retorna o nome da classe de exceção.
Da mesma forma, vejamos um exemplo da classe “ZeroDivisionError”.
#implementando o bloco trytentar:
x = 1/0
imprimir (x)
#implementar o bloco except para detectar o erro
exceto Exceção como exp:
imprimir (exp.__aula__)
#implementando o bloco except
exceto:
print ("Algo deu errado, exceto erro de nome")
Resultado
O outro bloco
O bloco else é usado com os blocos try e exception. O bloco else define um trecho de código que é executado se o bloco try for executado com sucesso e nenhum erro ocorrer. Às vezes, você pode precisar imprimir uma mensagem ou executar uma função quando o bloco try foi executado com sucesso. Por esta razão, podemos implementar o bloco else com os blocos try e except.
Neste exemplo, implementaremos o bloco else em nosso script Python.
#implementando o bloco trytentar:
x = 1/2
imprimir (x)
#implementar o bloco except para detectar o erro
exceto Exceção como exp:
imprimir (exp.__aula__)
#implementando o bloco else
senão:
imprimir ("Tudo correu bem")
Resultado
O bloco else é executado após a execução bem-sucedida do bloco try.
Vejamos agora outro exemplo usando o bloco else.
#implementando o bloco trytentar:
nome = "marca"
#implementar o bloco except para detectar o erro
exceto Exceção como exp:
imprimir (exp.__aula__)
#implementando o bloco else
senão:
print ("O nome é:", nome)
Resultado
No exemplo acima, a variável name é definida dentro do bloco try e é impressa no bloco else.
O bloco finalmente
O finalmente bloco contém o trecho de código que deve ser executado independentemente de o bloco try gerar uma exceção. O bloco finally é opcional e é declarado com o bloco try. Por exemplo, se abrimos um arquivo de texto para ler o bloco try e ele levanta um erro ou exceção, é melhor incluir o arquivo no bloco finally, mesmo se o erro ocorrer. Vamos implementar o bloco finally em nosso script Python.
#implementando o bloco trytentar:
imprimir (meu_dict)
#implementar o bloco except para detectar o erro
exceto Exceção como exp:
imprimir (exp.__aula__)
#implementando o bloco finally
finalmente:
print ("Este é o bloco final")
print ("O bloco final é executado")
Resultado
Na saída, pode-se ver que o bloco try levanta uma exceção. No entanto, o bloco final é executado no final.
Agora, vamos abrir um arquivo de texto no bloco try, o que levanta uma exceção enquanto o arquivo contido no bloco finally.
#implementando o bloco trytentar:
fileObj = open ("mystudent.xml "," r ")
fileObj.procurar (-2)
imprimir (fileObj.readlines ())
#implementando o bloco except
exceto Exceção como exp:
imprimir (exp.__aula__)
#implementando o bloco finally
finalmente:
fileObj.perto()
imprimir ("Arquivo fechado com sucesso")
Resultado
Como você pode ver, independentemente do erro de valor, o arquivo foi fechado com sucesso dentro do bloco finally.
Levante uma exceção
Embora as exceções sejam levantadas automaticamente quando ocorre um erro, em Python, você também pode gerar exceções manualmente. O levantar palavra-chave é usada para levantar ou lançar a exceção.
Iremos agora levantar algumas exceções usando a palavra-chave raise. No exemplo a seguir, a condição if é implementada para verificar se há números não negativos. Se existir algum número não negativo, a exceção “Números não negativos não são permitidos” é levantada.
#declarar duas variáveis numéricasnum1 = 20
num2 = -10
if ((num1<0) | (num2<0)):
Exceção de aumento ("Números não negativos não são permitidos")
senão:
imprimir (num1 + num2)
Resultado
Conclusão
Uma exceção ocorre em resposta a um erro em tempo de execução. Em Python, podemos lidar com exceções usando os blocos try e except. Este artigo explicou como usar exceções em Python por meio de vários exemplos.