Ir para conteúdo
Faça parte da equipe! (2024) ×

Básico sobre tratamento de exceções em python 3.4


☢|EXPL01T3R|☣
 Compartilhar

Posts Recomendados

exception-hierarchy.png

Depois de um longo tempo sem criar um tutorial diretamente na WC mesmo, resolvi fazer um básico sobre python, que ainda não domino completamente, mas de todas as linguagens que já vi, foi a que eu mais gostei, pois une poder a simplicidade

 

Bom, vamos la então..

 

O que é o tratamento de exceções ?

 

Sem copiar textos de outros lugares, para entender o tratamento de exceções, precisamos entender o que é uma exceção dentro da programação

 

Uma exceção é algo que saia fora do planejado, por exemplo, vc querer somar dois números, mas acabar inserindo uma letra e um numero, irá gerar um erro, esse erro é a chamada exceção, exceções muitas vezes são feias, visualmente falando, e acabam trazendo informações desnecessárias ao usuário final e algumas vezes causam até o vazamento de informações..

O Tratamento de exceções, é basicamente filtrar esses erros "feios", que costumam apresentar informações mais técnicas, para ajudar o programador a encontrar o erro, e exibir somente uma mensagem mais amigável e talvez com apenas um código do erro

 

na prática..

um script simples para somar 2 numeros

 

É necessário se cadastrar para acessar o conteúdo.

 

 

 

esse

 

Traceback (most recent call last):

File "<pyshell#5>", line 1, in <module>

N1 + N2

TypeError: unsupported operand type(s) for +: 'int' and 'str'

 

 

 

é a exceção, que informa ali a linha onde ocorreu o erro e o tipo, isso é feio para o usuário e na maioria das vezes só vai confundi-lo, então vamos usar o chamado tratamento de exceções, em python, assim como em muitas linguagens, ele é feito na sua forma mais básica com try e except

 

Sua sintaxe é semelhante a muitas linguagens de alto de nivel:

try:

comandos

except:

comandos que deverão ser executados caso de algo errado

 

voltando a código ali de cima, vamos filtrar esse erro

 

É necessário se cadastrar para acessar o conteúdo.

e já filtramos o erro, porem isso é muito vago, por que ocorreu o erro?

Para resolver isso, podemos criar exceções específicas para cada tipo de erro.. O python é bem gentil nessa parte e já te diz direto o tipo de erro..

Voltando la em cima no erro, qual o tipo de erro?

 

Traceback (most recent call last):

File "<pyshell#5>", line 1, in <module>

N1 + N2

TypeError: unsupported operand type(s) for +: 'int' and 'str'

 

TypeError

 

Então ai já sabemos o tipo do erro e podemos criar uma exceção específica pra erros desse tipo

 

É necessário se cadastrar para acessar o conteúdo.

 

A primeira vista, parece ser a mesma coisa, usar except somente e except <tipo do erro>, mas para códigos maiores, onde existam possibilidades de tipos diferentes de erros, isso ajuda tanto o programador, quanto o usuário a terem uma ideia do que saiu errado

 

um exemplo genérico.. dois erros comuns ao se trabalhar com urllib, um erro http e um erro na url..

É necessário se cadastrar para acessar o conteúdo.

 

o primeiro erro é porque o site não existe, o segundo é porque o fórum bloqueia certas requisições, até onde eu vi, com base no user-agent, pois alterando o user-agent da minha requisição, consegui conectar(mas isso é assunto pra outra hora)

se tentássemos usar o try, não saberiamos ao certo o que deu errado..

 

É necessário se cadastrar para acessar o conteúdo.

 

 

já se tentarmos, filtrar por tipo de erro..

É necessário se cadastrar para acessar o conteúdo.

 

Mas podemos dar ainda mais detalhes sobre o erro, de forma amigável.. pegando o erro HTTP por exemplo, existem vários tipos.. error 404, 403, etc.. que são códigos que servem para dizer o que deu errado.. para quem quiser dar uma olhada nos códigos

https://support.google.com/webmasters/answer/40132?hl=pt

 

 

É necessário se cadastrar para acessar o conteúdo.

 

e é isso ai :)

python-doc-icon.jpg

wVNulLU.gif

Link para o comentário
Compartilhar em outros sites

  • Velha Guarda

Curti demais! Exceptions para Assembly, nem sabia que existia..

Vou ver se crio um tópico em relação a exceptions para java também..

No caso, aproveitando o exemplo, não teria em assembly uma forma de fazer um cast?

se fosse 1 + "1", no java faríamos o Integer.parseInt e transformaríamos a string em inteiro..

Belo tópico, abraços!

Quer aprender a programar Python?

https://youtube.com/@ProgramadorPython

Link para o comentário
Compartilhar em outros sites

de assembly sei muito pouco, então não sei dizer ao certo rsrs, até dou uma olhada em assembly quando tenho tempo e surge coragem kk, mas nada muito longe

 

falando em python, daria sim pra forçar a entrada de um inteiro

a entrada de dados inicialmente é feita com input

É necessário se cadastrar para acessar o conteúdo.

porem esse input retorna uma string, vc teria então que fazer

 

É necessário se cadastrar para acessar o conteúdo.

 

ou, da forma correta pra já pegar em inteiro de uma vez

 

É necessário se cadastrar para acessar o conteúdo.

 

porem se o usuário entrasse com uma letra por exemplo, retornaria um erro do tipo ValueError, informando que não conseguiu um valor válido para aquele dado em base 10, entraria novamente ai a exceção rsrs

eu particularmente, sempre que possível tento ***** com a vida do usuário, ao invés de encerrar a aplicação, volto no ponto do erro até ele fazer direito rsrs

 

8d94Oxb.jpg

python-doc-icon.jpg

wVNulLU.gif

Link para o comentário
Compartilhar em outros sites

  • Velha Guarda
de assembly sei muito pouco, então não sei dizer ao certo rsrs, até dou uma olhada em assembly quando tenho tempo e surge coragem kk, mas nada muito longe

 

falando em python, daria sim pra forçar a entrada de um inteiro

a entrada de dados inicialmente é feita com input

É necessário se cadastrar para acessar o conteúdo.

porem esse input retorna uma string, vc teria então que fazer

 

É necessário se cadastrar para acessar o conteúdo.

 

ou, da forma correta pra já pegar em inteiro de uma vez

 

É necessário se cadastrar para acessar o conteúdo.

 

porem se o usuário entrasse com uma letra por exemplo, retornaria um erro do tipo ValueError, informando que não conseguiu um valor válido para aquele dado em base 10, entraria novamente ai a exceção rsrs

eu particularmente, sempre que possível tento ***** com a vida do usuário, ao invés de encerrar a aplicação, volto no ponto do erro até ele fazer direito rsrs

 

8d94Oxb.jpg

 

Nossa viajei, não faço a minima ideia de onde li Assembly lol

jurava que tava escrito assembly ahuhahau

Erro meu mesmo..

 

ah bem fácil também

valeu pela resposta rápida, abraços man

Quer aprender a programar Python?

https://youtube.com/@ProgramadorPython

Link para o comentário
Compartilhar em outros sites

Este tópico está impedido de receber novos posts.
 Compartilhar

×
×
  • Criar Novo...

Informação Importante

Nós fazemos uso de cookies no seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies , caso contrário, vamos supor que você está bem para continuar.