<< 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.