2.1 Criando Exceções
Não pode vencê-los — junte-se a eles. Se não podemos evitar erros no programa, precisamos aprender a controlá-los. Então, bora aprender a criar exceções conscientemente.
O exemplo mais simples de exceção — é a divisão por zero. E o programa é bem simples:
x = 100 / 0
Esse código vai executar com erro:
Traceback (most recent call last):
File "", line 1, in
x = 100 / 0
~~~^~
ZeroDivisionError: division by zero
ZeroDivisionError — é o nome da exceção, e division by zero — é a descrição breve. Python também vai te mostrar o número da linha onde essa exceção rolou.
Incompatibilidade de Tipos de Dados
Claro, existem outras exceções. Por exemplo, ao tentar somar uma string com um número:
s = "100" + 100
Vai rolar uma exceção TypeError:
Traceback (most recent call last):
File "", line 1, in
TypeError: unsupported operand type(s) for +: 'str' and 'int'
Fora dos Limites da Lista
Outra errozão comum que gera exceção é tentar acessar um elemento que não tá na lista:
my_list = [1, 2, 3]
print(my_list[10])
Vai rolar uma exceção IndexError:
Traceback (most recent call last):
print(my_list[10])
~~~~~~~^^^^
IndexError: list index out of range
Quantas existem no total? Há milhares de tipos de exceções. Além disso, você pode criar as suas próprias, se as existentes não bastarem para descrever alguma situação específica. Embora as mais populares não sejam tantas.
2.2 Lista das Exceções mais Populares
Existem muitas exceções, mas pra você, que tá começando, é útil conhecer as mais populares. Vou listar algumas delas:
| Exceção | Descrição |
|---|---|
Exception |
Classe base para todas as exceções. |
IndexError |
Ocorre quando se tenta acessar um índice que não existe em uma sequência (como lista ou tupla). |
KeyError |
Ocorre ao acessar uma chave que não existe num dicionário. |
NameError |
Ocorre ao tentar acessar uma variável que não existe. |
RuntimeError |
Erro geral de execução que não se encaixa em outras categorias. |
StopIteration |
Indica o fim de uma iteração. |
SyntaxError |
Erro de sintaxe no código. |
IndentationError |
Erro de indentação no código (subtipo de SyntaxError). |
TabError |
Ocorre ao misturar tabulações e espaços para indentação (subtipo de IndentationError). |
TypeError |
Quando se tenta realizar uma operação com tipos de dados incompatíveis. |
UnboundLocalError |
Ocorre ao acessar uma variável local antes de ser declarada (subtipo de NameError). |
ValueError |
Quando uma função recebe um argumento com valor inadequado. |
ZeroDivisionError |
Divisão por zero. |
Provavelmente, você, como novato, vai se deparar com todos esses erros no primeiro mês de estudo. E não tem problema nisso — é errando que se aprende.
2.3 Erros no Código
Bora analisar mais algumas situações em que ocorrem erros no código, pra você pegar a manha e achar eles mais rápido no seu próprio código:
IndentationError
Esse erro rola quando as indentações no código estão erradas. Por exemplo, misturar tabulações e espaços ou a quantidade errada de indentação.
def example():
print("Hello")
print("World") # Indentação errada causa IndentationError
example()
NameError
def example():
print(undeclared_variable) # Tentar usar variável não declarada causa NameError
example()
ValueError
Esse erro ocorre quando uma operação ou função recebe um argumento de tipo correto, mas com valor inadequado.
def example():
int("abc") # Tentar converter string não numérica causa ValueError
example()
KeyError
Esse erro rola quando o programa tenta acessar uma chave que não existe em um dicionário.
def example():
my_dict = {"a": 1, "b": 2}
print(my_dict["c"]) # Tentar acessar chave inexistente causa KeyError
example()
SyntaxError
Esse erro ocorre quando há um erro de sintaxe no código, ou seja, o código não segue a gramática do Python.
def example():
eval("if True print('Hello')") # Sintaxe errada causa SyntaxError
example()
Prevenido vale por dois. Agora você pode identificar e até criar situações que causam erros. Chegou a hora de aprender a lidar com esses erros.
GO TO FULL VERSION