Tratamento de Exceções

<< Clique para Mostrar o Sumário >>

 

Tratamento de Exceções

A linguagem Python provê um mecanismo de tratamento de exceções que possibilita definir as ações que devem ser tomadas quando ocorrerem problemas durante a execução de um código sintaticamente correto. As declarações utilizadas para lidar com exceções são try, except, else e finally.

Para lidar com as exceções é possível utilizar a classe básica Exception definida nativamente na linguagem Python. A partir desta classe é possível derivar outras para tratamentos de exceções de casos particulares que venham a ser necessários. A sintaxe para lidar com as exceções é a seguinte:

try:
  # bloco de código principal a ser executado
except(Exception1[, Exception2[,...Exception_n]]]):
  # bloco de código para o tratamento das exceções
  # dos tipos definidos como parâmetros
  # da declaração
else:
  # bloco de código a ser executado
  # caso nenhuma exceção tenha sido detectada
finally:
  # bloco de código a ser sempre executado

 

Além de tratar exceções, também é possível criar um evento de exceção através da declaração raise, seguida ou não de argumentos a serem utilizados no tratamento da exceção lançada.

 

NOTA

É possível definir formas distintas de tratar diferentes tipos de exceções que venham a ocorrer no código. Neste caso é preciso explicitamente declarar o tipo de exceção a tratar por uma das cláusulas except.

 

O exemplo a seguir declara uma classe que herda as suas definições da classe base Exception do Python e depois a utiliza para o tratamento de uma exceção relacionada.

In [1]: class MyException(Exception):
  ....:  def __init__(self, info):
  ....:    self.info = info
In [2]: try:
  ....:  raise MyException('Some error!')
  ....: except MyException as ex:
  ....:  print('Exception raised. Information: {}'.format(ex.info))
  ....: else:
  ....:  print('Never will be!')
  ....: finally:
  ....:  print('Always will be!')
  ....:
Exception raised. Information: Some error!
Always will be!

 

A primeira linha define a classe MyException a partir da classe base Exception do Python, que contém um membro info para armazenar informações que podem ser passadas no momento do lançamento de uma exceção.

A segunda linha inicia o bloco de tratamento de exceções com a declaração try. O código deste bloco sempre vai lançar uma exceção do tipo MyException, que é capturada na sequência pela declaração except, imprimindo seu conteúdo.

A declaração else foi colocada apenas para demonstrar o seu funcionamento, que neste caso nunca é avaliada, uma vez que no bloco try uma exceção é sempre disparada.

Por fim, a declaração finally foi adicionada para demonstrar que sempre é avaliada, independente de ter sido ou não disparada uma exceção.

Mais informações sobre o tratamento de exceções em Python podem ser obtidas na documentação fornecida pela Python Software Foundation ou através de inúmeros materiais disponíveis na Internet.

Esta página foi útil?