Aprenda Como Trabalhar Com Exceções em Python

Neste artigo nós aprenderemos como utilizar exceções em Python, para que possamos tratar blocos de código que possam falhar por algum motivo.

No dia a dia de um programador, erros, exceções, bugs, etc. é uma constante.

É comum que o código falhe por um motivo ou outro.

A grande questão, é o que fazer caso o nosso código falhe.

É justamente nesse momento que precisamos aprender a trabalhar com exceções em Python.

Mega Tutorial Python

  1. Introdução
  2. Primeiros passos e o Hello World
  3. Tipos de Dados em Python
  4. Operadores e Expressões
  5. Trabalhando com Funções em Python
  6. Estrutura de Dados em Python
  7. Trabalhando com Módulos em Python
  8. Controle de Fluxo em Python
  9. O Python e o While Else
  10. Objetos em Python
  11. Representação Interna dos Objetos
  12. Entrada e Saída (Este artigo)
  13. Trabalhando com Exceções em Python (Este artigo)
  14. Qual o Próximo Passo?
  15. Começando com Flask Framework
  16. Templates no Flask Framework
  17. Flask com Angular 6

O que São Exceções

exceções em python - try catch all code

Exceções são situações excepcionais que ocorrem no seu código.

Imagina que você criou um programa que realiza a leitura de um determinado arquivo.

Este arquivo deve estar em um determinado local para que o seu programa funcione.

Agora imagine que por algum motivo, o arquivo desapareceu. Alguém o deletou, ele corrompeu, um vírus sumiu com ele, ou você mesmo sem querer acabou deletando o coitado.




O que acabou de acontecer? Uma situação excepcional para o seu programa.

Ele parte do principio que o arquivo está lá. E caso esteja, o programa funciona corretamente.

Porém, infelizmente ele não está mais lá, e agora acontecem exceptions em seu programa.

Diferença entre Erros e Exceções em Python

Bem, as vezes uma dúvida pode surgir quanto ao uso de exceptions em python.

Porque algumas exceptions usam o sufixo Error?




Bem, apesar de serem exatamente a mesma coisa, programaticamente falando, nós podemos interpretar de uma maneira diferente do ponto de vista conceitual.

Imagina que o seu programa está sendo executado, e uma pessoa interrompe a sua execução.

Isso pode ser considerado uma exceção, certo? O seu algorítimo provavelmente não foi feito para ser interrompido no meio, logo, uma exceção ocorreu.

Porém, muitas vezes, o que tentamos tratar diretamente em nosso código não são conceitualmente uma exceção. Eles são na verdade erros que podem ocorrer em seu programa.

A PEP 0008, que fala sobre as convenções e guia de estilo no código Python fala sobre exceptions:

Because exceptions should be classes, the class naming convention applies here. However, you should use the suffix “Error” on your exception names (if the exception actually is an error).

Ou em uma tradução livre:

Porque as exceções devem ser classes, a convenção de nomes para classes se aplica aqui. Porém, você deve adicionar o sufixo “Error” nos nomes de suas exceções (se a exceção for realmente um erro).

Como tratar Exceções Em Python

Bem, agora que já sabemos o que são exceções, vamos aprender como tratá-las para que nosso código funcione como esperado.

Olhe o código a seguir:


O código aparenta executar perfeitamente, não aparenta? E realmente funciona, desde que sigamos o que o programa exige:


Mas o que acontece se o segundo número for o número zero?


Tcharamm, uma exceção é lançada! Mais especificamente, o erro ZeroDivisionError .

Legal não?! Mas como resolvemos este problema?

Usando o Try Except

Para tratar uma exceção em Python, nós utilizamos o try ... except .


E agora, no lugar de vermos um erro ao executar o cálculo, nós simplesmente recebemos uma mensagem mais amigável.

Tratando Exceções Específicas

Mas e se quisermos adicionar um tratamento específico para determinado tipo de exceção?

Note que divisão por zero não é apenas o nosso único ponto de falha. Vamos tentar executar o nosso programa informando uma letra ao invés de um número?


Nós simplesmente adicionamos uma letra, porém o nosso erro é que não podemos dividir por zero.

Isso ficou no mínimo estranho, não?

Nós podemos tratar diversas exceções em nosso código, como vamos ver a seguir:


E agora, ao executarmos o nosso programa, teremos uma mensagem para cada erro que encontramos e tratamos:



Mas estamos tratando todo o código? Eu diria que não!

Olha o que acontece se pressionarmos ctrl + d ao executarmos nosso programa:

Capturando todas as Exceções

Mas nós precisamos tratar todas as exceções possíveis?

Bem, a resposta é sim e não.

Teoricamente, nossos programas devem ser a prova de falhas, porém não tem como ficar tratando todo o nosso código, e ainda mais com tratamentos específicos para cada situação.

Nós podemos utilizar tratamentos mais brandos, que possam englobar diversas exceptions em um bloco único de código.

Isso acontece pois as exceções em Python possuem uma hierarquia.

Ao tratarmos uma exceção, nós iremos capturar todas as exceções que estão abaixo da hierarquia da exceção declarada.

Olhe o código a seguir:


Estamos tratando diversas exceptions, porém, o primeiro tratamento é a exceção Exception.

O problema de fazer isso, é que como dissemos anteriormente, exceções possuem hierarquia, e ao tratarmos uma, estamos tratando todas as que estão a baixo da hierarquia de exceções.

Olha o que vai acontecer se informarmos um zero agora:


Para deixar as coisas mais simples, vamos tratar apenas a divisão por zero, e para todas as outras, vamos tratar de maneira genérica:

Hierarquia de Exceções Em Python

Abaixo segue a lista da hierarquia das built-in exceptions disponibilizadas pelo Python:

Considerações Finais

E ai, gostou de aprender sobre exceções em Python?

Note que o tratamento de erros envolve muito mais do que colocar todo o seu código dentro de um try...except .

Existem boas práticas no tratamento de exceções em uma aplicação, e as soluções e sugestões podem inclusive variar de uma linguagem para outra.

O importante é você saber que é possível prever um erro na execução do seu código, e mais importante ainda, saber que ainda tem muito mais para aprender sobre exceções!

Não esqueça de comentar abaixo! Se ficou alguma dúvida, não exite em perguntar!

Um grande abraço 😉

Links Importantes




No Responses

Leave a Reply