O tratamento de exceções é sua capacidade de personalizar e exibir mensagens de erro para partes do programa que não funcionam.

Esteja você construindo um site, criando uma API, um módulo ou qualquer outro produto usando Python, sua capacidade de lidar com exceções com eficácia permite que você indique explicitamente a causa de um erro.

Aqui, veremos como você pode lidar com exceções em Python.

Como funciona o tratamento de exceções em Python

Quando você levanta exceções, está dizendo ao Python para exibir uma mensagem sempre que um bloco de código falhar. O tratamento de exceções é como dizer a alguém para tentar levantar um peso. E se eles não puderem, eles devem avisar você.

Para levantar uma exceção no Python, entretanto, você dirá ao Python para tentar e executar um determinado bloco de código. Se esse bloco falhar, você pode pedir ao Python para lançar uma exceção definida para o código que falhou.

Quando você deve usar exceções na programação Python?

Na maioria das ocasiões, você pode mascarar erros padrão do Python usando exceções. Mas você precisa permanecer vigilante, pois isso pode causar problemas de depuração. Conseqüentemente, você pode achar difícil descobrir a causa raiz de um eventual bug.

instagram viewer

Portanto, você deve usar exceções quando tiver testado suficientemente o seu código e tiver certeza de que ele funciona. Em última análise, é uma prática recomendada usá-los para lidar com possíveis falhas que podem surgir da extremidade do usuário, em vez do código em si.

Em outras palavras, você pode usar exceções como uma ferramenta de aviso para orientar os usuários sobre como usar seu programa.

Tratamento de exceções Python

Para lidar com exceções em Python, primeiro você precisa envolver seu código em um tente... exceto quadra. Ocasionalmente, pode ser necessário incluir um finalmente declaração para lidar com outras ações, dependendo de suas necessidades.

O conceito de codificação das exceções Python geralmente se parece com este:

tentar:
"código a ser executado"
exceto:
"mensagem de erro"

Como mencionado anteriormente, você também pode usar finalmente em um bloco de exceção. Mas o código que você escreve dentro de um finalmente cláusula é independente e é executada independentemente de haver uma exceção ou não.

Em essência, é útil se você tiver outro bloco de código que deseja executar continuamente, independentemente do que acontece dentro do tente... exceto quadra.

Aqui está um exemplo:

tentar:
imprimir (9 + 6)
exceto:
imprimir ("mensagem de erro")
finalmente:
imprimir ("reinicie")
Resultado:
15
por favor reinicie

No código acima, por favor reinicie é executado continuamente, independentemente de haver uma exceção ou não.

A senão condição também pode seguir um exceto demonstração:

tentar:
C = 2 + B
exceto:
imprimir ("B precisa ser definido")
senão:
print (u "Adicionado com sucesso! O resultado é% s "% (C))
Resultado: B precisa ser definido

Agora tente novamente com "B" definido:

tentar:
B = 5
C = 2 + B
exceto:
imprimir ("B precisa ser definido")
senão:
print (u "Adicionado com sucesso! O resultado é% s "% (C))
Resultado: Adicionado com sucesso! O resultado é 7

Os exemplos acima são exceções não padronizadas. Mas você pode ter uma exceção mais explícita ao combinar exceções integradas (definidas) com as não padronizadas:

tentar:
C = 2 + B
exceto NameError como err:
print (err, ":", "B precisa ser definido, por favor")
senão:
print (u "Adicionado com sucesso! O resultado é% s "% (C))
Resultado: nome 'B' não está definido: B precisa ser definido, por favor

A exceção acima verifica primeiro se há um NameError no tentar quadra. Em seguida, imprime o padrão NameError exceção primeiro ("nome 'B' não está definido"). E suporta isso com sua exceção escrita ("B precisa ser definido, por favor").

Relacionado: Princípios básicos de programação que todo programador deve conhecer

E se você quiser lidar com uma cadeia de exceções, você também pode acompanhar um tentar bloco com muitos exceto afirmações. Isso é muito útil se o seu tentar bloco tem o potencial de ter muitas exceções:

tentar:
B = 5
C = 2 + B
D = flutuante (6)
F = 7/0
exceto NameError como err:
print (err, ":", "B precisa ser definido, por favor")
exceto ValueError como val:
print (val, ":", "Você não pode converter esses dados")
exceto ZeroDivisionError como zeroerr:
imprimir (zeroerr, ":", "Você não pode dividir um número por zero")
senão:
print (u "Operação bem-sucedida! Os resultados são:% s,% s e% s "% (C, D, F))
Resultado: divisão por zero: você não pode dividir um número por zero

E se a divisão for válida? Por exemplo, substituindo F = 7/0 no código acima com F = 7/5 dá:

Resultado: Operação bem-sucedida! Os resultados são: 7, 6,0 e 1,4

Exceções definidas pelo usuário em Python

Você também pode criar sua exceção e chamá-los posteriormente em seu programa. Isso permite fornecer uma descrição específica de sua exceção e nomeá-la como quiser.

No entanto, cada exceção definida pelo usuário (direta ou indiretamente) ainda vem da Exceção classe de Python.

O código de exemplo abaixo faz referência à base Exceção diretamente ligando RuntimeError a partir dele:

class connectionError (RuntimeError):
def __init __ (self, value):
self.value = value
tentar:
raise connectionError ("Nome de host inválido")
exceto connectionError como err:
imprimir (err.value)
Resultado: Nome de host ruim

Observe que erro de conexão, neste caso, é uma classe definida pelo usuário, que você pode aumentar sempre que precisar em seu programa.

Relacionado: O guia do iniciante para expressões regulares com Python

Você pode fazer uma exceção definida pelo usuário derivando-a diretamente do Exceção classe base. A exceção abaixo, no entanto, evita a subtração de 5 de 6 e chama a exceção da classe base diretamente:

erros de classe (exceção):
passar
classe sixFiveError (erros):
def __init __ (self, value, message):
self.value = value
self.message = message
tentar:
raise sixFiveError (6-5, "Esta subtração não é permitida")
exceto sixFiveError como e:
print ("Ocorreu um erro:", e.message)
Resultado: Ocorreu um erro: esta subtração não é permitida

Na prática, você pode usar uma exceção definida anteriormente chamando-a em outra função. Por exemplo, você pode criar um floatError que só permite a adição de dois flutuadores:

# Primeiro chame as classes de exceção de base:
erros de classe (exceção):
passar
# Em seguida, deduza sua própria exceção da classe base:
classe FloatError (erros):
def __init __ (self, value, message):
self.value = value
self.message = message
# Crie uma função para adicionar dois flutuadores:
def addTwoFloat (a, b):
if (type (a) and type (b))! = float:
aumentar FloatError (a + b, "Os números devem ser flutuantes para serem adicionados")
senão:
imprimir (a + b)
addTwoFloat (4, 7)
Resultado: __main __. FloatError: (11, 'Os números devem ser flutuantes para adicionar')

Porque agora você definiu um FloatError classe, Python aumenta se você tentar adicionar dois literais não flutuantes usando o addtwoFloat função.

Você pode imprimir o FloatError classe no mesmo arquivo Python em que você a criou para ver o que acontece:

imprimir (FloatError)
Resultado:

FloatError, no entanto, não é uma exceção embutida do Python. Você pode verificar isso ligando para FloatError em outro arquivo Python novo onde você não criou esta classe:

imprimir (FloatError)
Resultado: NameError: o nome 'FloatError' não foi definido

Você ganha um NameError porque Python não o reconhece como uma exceção padrão.

Você também pode tentar autodefinir outras classes de erro para ver como elas funcionam.

Torne seus programas Python mais amigáveis ​​ao usuário com exceções

Existem muitas exceções padrão em Python. Mas você também pode definir o seu. No entanto, a facilidade de uso do seu programa depende, até certo ponto, de como ele lida com várias exceções (sejam definidas pelo usuário, não específicas ou padrão).

As exceções, entretanto, permitem que você determine como seu programa deve funcionar quando os usuários interagem com eles. Declarar de forma clara e concisa a causa de um erro também informa aos usuários o que estão fazendo de errado e, às vezes, indica a direção certa.

E-mail
Como depurar seu código Python

Equipe-se com o know-how para eliminar todos os bugs do Python em seu caminho.

Leia a seguir

Tópicos relacionados
  • Programação
  • Pitão
  • Tutoriais de codificação
Sobre o autor
Idowu Omisola (82 artigos publicados)

Idowu é apaixonado por qualquer tecnologia inteligente e produtividade. Em seu tempo livre, ele brinca com programação e muda para o tabuleiro de xadrez quando está entediado, mas também adora quebrar a rotina de vez em quando. Sua paixão por mostrar às pessoas o caminho da tecnologia moderna o motiva a escrever mais.

Mais de Idowu Omisola

Assine a nossa newsletter

Junte-se ao nosso boletim informativo para dicas de tecnologia, análises, e-books grátis e ofertas exclusivas!

Mais um passo…!

Confirme o seu endereço de e-mail no e-mail que acabamos de enviar.

.