In [1]:
10 *(1/0)
In [2]:
4 + spam*3
In [3]:
'2' + 2
Podemos controlar o fluxo de execução quando algo inesperado ocorrer em nosso código.
In [4]:
produtos = ["ipda", "cel", "note"]
print(produtos[1])
In [5]:
print(produtos[3])
Para contornar esse erro, podemos utilizar o par try/catch.
In [6]:
try:
print(produtos[3])
except:
print("O vetor não possui a posição desejada")
Desta forma o erro não aparece, porém caso o erro seja de outro tipo, como:
In [7]:
produtos[3+'1']
In [8]:
try:
print(produtos[3+'1'])
except:
print("O vetor não possui a posição desejada")
Note que a saída será a mesma que definimos anteriormente. Portanto precisamos expecificar qual é o tipo no except.
In [9]:
try:
print(produtos[3+'1'])
except IndexError:
print("O vetor não possui a posição desejada")
Para ter mais de uma except, é só adicionar o outro tipo abaixo:
In [10]:
try:
print(produtos[3+'1'])
except IndexError:
print("O vetor não possui a posição desejada")
except TypeError:
print("Erro de Tipo")
Alguns tipos existentes de Erro estão listados na tabela abaixo
| Classe | Descrição |
|---|---|
| Exception | Base classe para a maioria dos tipos de erros. |
| AttributeError | Aparece quando um objeto não tem o membro desejado. Por exemplo, objeto.teste, se teste não existir, aparece essa exceção. |
| EOFError | Aparece quando um final de arquivo é alcançado pelo console ou pelo arquivo. |
| IOError | Aparece quando ocorre alguma operação de erro de I/O (por exemplo, abrir um arquivo). |
| IndexError | Aparece se o index de um sequencia está for a dos limites. |
| KeyError | Aparece se uma chave não existente é requisitada para um dicionário ou set. |
| KeyboardInterrupt | Aparece se o usuário digitar Ctrl-C enquanto o programa está executando |
| NameError | Aparece se um identificador não existente é utilizado |
| TypeError | Aparece quando um tipo errado do parâmetro é enviado para a função |
| ValueError | Aparece quando um parâmetro tem valor invalido, por exemplo, sqtr(-5) |
| ZeroDivisionError | Aparece quando qualquer divisão utiliza 0 como divisor |
Mais sobre tratamento de exceções em: https://docs.python.org/3/tutorial/errors.html
As exceções estão disponíveis no módulo tweepy diretamente, o que significa que não é necessário importar tweepy.error. Por exemplo, tweepy.error.TweepError está disponível por tweepy.TweepError.
exception TweepError - Erro comumente utilizado, ele aparece por diversos motivos. O código do erro pode ser acessado por TweepError.message[0]['code']. Os códigos estão descritos na página de códigos de erros da API do Twitter.exception RateLimitError - Erro acontece quando o Twitter aplica algum limite, facilitando o tratamento do mesmo.Referência: http://tweepy2.readthedocs.io/en/latest/api.html?highlight=tweepy.TweepError#tweepy-error-exceptions
Exemplo de código:
try:
novos_tweets = api.search(q='Python')
except tweepy.TweepError as e:
print("Erro:", (e))
Abra o notebook aula4-parte4-pesquisar-tweets.ipynb e altere uma das chaves de acesso para fazer o teste. Note que quando executar o while, a seguinte saída irá aparecer:
Erro: [{'code': 32, 'message': 'Could not authenticate you.'}]
In [ ]: