# [[Tipos de erros em Python]]
Em [[Linguagem de programação Python|Python]], erros (ou exceções) são eventos que ocorrem durante a execução de um programa e interrompem o fluxo normal das instruções. É importante entender os diferentes tipos de erros para poder depurar e corrigir seu código de forma eficaz.
Aqui estão alguns dos tipos de erros mais comuns em Python:
1. **`AttributeError`**: Ocorre quando você tenta acessar um atributo ou método que não existe em um objeto.
```python
class Pessoa:
def __init__(self, nome):
self.nome = nome
pessoa = Pessoa("Alice")
# print(pessoa.idade) # Isso causaria um AttributeError
```
1. **`ImportError`**: Ocorre quando há um problema ao importar um módulo. Isso pode acontecer se o módulo não estiver instalado, se o nome estiver incorreto ou se o Python não conseguir encontrá-lo no caminho de importação.
```python
# import modulo_inexistente # Isso causaria um ImportError
```
1. **`IndexError`**: Ocorre quando você tenta acessar um índice inválido em uma sequência (como uma lista, tupla ou string).
```python
lista = [1, 2, 3]
# print(lista[3]) # Isso causaria um IndexError
```
1. **`KeyError`**: Ocorre quando você tenta acessar uma chave que não existe em um dicionário.
```python
dicionario = {"nome": "Alice", "idade": 30}
# print(dicionario["endereco"]) # Isso causaria um KeyError
```
1. **`NameError`**: Ocorre quando você tenta usar uma variável que não foi definida.
```python
# print(variavel_nao_definida) # Isso causaria um NameError
```
1. **`NotImplementedError`**: É usado como um marcador para indicar que um método ou função ainda não foi implementado. É comum em classes abstratas ou interfaces.
```python
class Animal:
def fazer_som(self):
raise NotImplementedError("Subclasses devem implementar este método")
class Cachorro(Animal):
def fazer_som(self):
return "Au au!"
# animal = Animal()
# animal.fazer_som() # Isso causaria um NotImplementedError
cachorro = Cachorro()
print(cachorro.fazer_som())
```
1. **`StopIteration`**: É usado por iteradores para sinalizar que não há mais elementos a serem retornados.
```python
meu_iterador = iter([1, 2, 3])
# next(meu_iterador)
# next(meu_iterador)
# next(meu_iterador)
# next(meu_iterador) # Isso causaria um StopIteration
```
1. **`SyntaxError`**: Ocorre quando há um erro na sintaxe do código Python. Isso geralmente indica um erro de digitação, um parêntese ou aspas não fechadas, ou o uso incorreto de palavras-chave.
```python
# print("Olá, mundo" # Isso causaria um SyntaxError (falta um parêntese)
```
* **`IndentationError`**: Um tipo específico de `SyntaxError` que ocorre devido a problemas de indentação. Python usa indentação para definir blocos de código, então a indentação incorreta pode levar a erros.
```python
# def minha_funcao():
# print("Olá") # Isso causaria um IndentationError (indentação incorreta)
```
9. **`TypeError`**: Ocorre quando uma operação ou função é aplicada a um objeto de tipo inadequado.
```python
# print("Olá" + 5) # Isso causaria um TypeError (não é possível concatenar string com inteiro)
```
1. **`ValueError`**: Ocorre quando uma função recebe um argumento com o tipo correto, mas com um valor inválido.
```python
# int("abc") # Isso causaria um ValueError (não é possível converter "abc" para inteiro)
```
**Como lidar com erros:**
É importante tratar os erros em seu código para evitar que o programa seja interrompido abruptamente. Você pode usar blocos `try…except` para capturar e lidar com exceções:
```python
try:
# Código que pode gerar uma exceção
resultado = 10 / 0
except ZeroDivisionError:
# Lidar com a exceção
print("Erro: divisão por zero!")
```
**Referências:**
* [8. Errors and Exceptions — Python 3.12.5 Documentation](https://docs.python.org/pt-br/3/tutorial/errors.html)
* [10 Python Errors Explained In 15 Minutes - YouTube](https://www.youtube.com/watch?v=JG1livF44_E&t=601s)