Objetivos
Exception/Exceção
Uma exceção, é um evento ou acontecimento não desejado que pode ocorrer durante a execução
de nossos programas em Python, como erros de acesso a memória, falhas ao abrir um arquivo e outros.
Quando esse exceção acontece, um objeto de um tipo de exceção é lançado para tenhamos conhecimento
de que um tratamento deve ser feito. Esse objeto contém as informações sobre o erro ocorrido.
Recuperando informações de uma exception
Quando uma exceção ocorre, precisamos obter algumas informações básicas como: a mensagem do erro,
onde o erro ocorreu e outros.
Abaixo, recuperarmos a informação de mensagem e tipo da exceção lançada. Outros informações podem
ser conferidas no traceback que será visto mais adiante.
Exemplo 1
try:
print(1/0)
except Exception as e:
print("mensagem:",e) #mensagem
print("classe:",e.__class__) #nome da class
Saída
mensagem: division by zero
classe: <class 'ZeroDivisionError'>
O Traceback armazena todas as chamadas e funções feitas em nossos programas até a
linha em que uma exceção foi lançada.
Como Traceback funciona como uma Stack(Pilha), as chamadas são armazenadas umas
sobres as outras, sendo a linha que lançou uma exceção como a última.
Para utilizarmos o Traceback, precisamos inicialmente importar seu módulo como abaixo:
Sintaxe
import traceback
Para exibir exibir as informações do traceback, precisamos invocar seu método print.exc
Sintaxe
traceback.print_exc()
Exemplo 2
import traceback
try:
print(1/0)
except Exception:
traceback.print_exc()
Saída
Traceback (most recent call last):
File "/home/main.py", line 4, in
print(1/0)
ZeroDivisionError: division by zero
Para lançarmos uma exceção explicitamente em nossos programas em Python, utilizamos o comando
raise seguindo de uma instância da exceção que desejamos lançar.
Sintaxe
raise classe_excecao(mensagem_erro)
Onde
mensagem_erro: mensagem de erro customizada para informação
Exemplo 2
import traceback
try:
raise ZeroDivisionError("Ocorreu um erro")
except Exception as e:
traceback.print_exc()
Saída
Traceback (most recent call last):
File "/home/main.py", line 4, in
raise ZeroDivisionError("Ocorreu um erro")
ZeroDivisionError: Ocorreu um erro
No exemplo 2 anterior, utilizamos o comando raise para lançar uma exceção de forma
explícita.
Em alguns momentos, quando o tratamento da exceção não pode ser tratada, por algum motivo, em seu
respectivo bloco catch.
Quando o que foi discutido acima ocorre, podemos relançar uma exceção para um escopo acima do
atual utilizado o mesmo comando raise.
Sintaxe
raise variavel_excecao
Exemplo 3
def funcao():
try:
print(1/0)
except Exception as e:
raise e # relançando exception
try:
funcao()
except ZeroDivisionError as e: #capturando exception relançada
print(e)
Saída
division by zero
Caso uma nova exceção seja lançada ou invés de relançada, as informações do traceback
referentes ao erro anterior serão perdidos.
A linguagem Python possuim várias execeções nativas. Abaixo uma lista das mais comuns que podem
ser utilizadas:
Tab. 1: Exceções mais comuns
| Nome |
Descrição |
| AssertionError |
Lançada quando há erro em um assert |
| AttributeError |
Lançada quando há erro ao atribuição ou referência |
| EOFError |
Lançada quando função input alcança a condição EOF |
| FloatingPointError |
Lançada quando há erro de ponto flutuante |
| GeneratorExit |
Lançada quando há erro |
| ImportError |
Lançada quando há erro ao importa módulo |
| IndexError |
Lançada quando um índice está fora do intervalo |
| KeyError |
Lançada quando uma chave não existe em um dicionário |
| KeyboardInterrupt |
Lançada quando Ctrl-C ou Delete é pressionado |
| MemoryError |
Lançada quando não há mais memória |
| NameError |
Lançada quando uma variável não é encontrada |
| NotImplementedError |
Lançada por métodos abstratos |
| OSError |
Lançada quando há erro S.O lança um erro |
| OverflowError |
Lançada quando há erro em operação aritmética |
| ReferenceError |
- |
| RuntimeError |
Lançada quando o erro não associada a nenhum outro erro |
| StopIteration |
Lançada quando o método next não retorna mais itens |
| SyntaxError |
Lançada quando há erro de sintaxe no código |
| IndentationError |
Lançada quando há erro na identação no código |
| TabError |
Lançada quando há erro em tabulação e espaços na identação |
| SystemError |
- |
| SystemExit |
- |
| TypeError |
- |
| UnboundLocalError |
- |
| UnicodeError |
- |
| UnicodeEncodeError |
- |
| UnicodeDecodeError |
- |
| UnicodeTranslateError |
- |
| ValueError |
Lançada quando há erro ao atribuir valor a uma argumento de tipo diferente |
| ZeroDivisionError |
Lançada quando há erro de divisão por zero |
Histórico de atualizações
- 12/09/2025 - revisão 3 - Ajustes: pontuais, sintaxes e objetivos
- 18/09/2024 - revisão 1 - Ajustes gramaticais; outros ajustes
- 19/02/2024 - versão inicial
Os cursos oferecidos nesta página são cursos fornecidos por parceiros. Ao comprar um curso clicando
em seu banner, você está ajudando a manter o projeto TutorialDev vivo. Os sites dos cursos parceiros utilizam cookies.