Olá!
> Eu vejo as exceções como uma evolução natural desse idioma, a
> diferença é que ao invés de usar um código de erro sem sentido, você
> tem um objeto próprio para representar a exceção.
Há uma outra diferença brutal entre o uso da checagem dos
códigos de retorno e o tratamento de exceções. Foi uma das
coisas que me revoltou em C quando comecei a fazer coisas
sérias com a linguagem.
Imagine que você tenha um algoritmo relativamente complexo,
onde diversas coisas podem dar errado -- por exemplo, abrir
um arquivo, verificar se ele existe, verificar se foi aberto,
alocar memória para ler o arquivo, fechá-lo, etc. Cada erro
deve ser tratado de alguma forma (em alguns casos, abortar o
programa, em outros, tentar corrigir, etc.). Esse tratamento
precisa ser feito em uma seqüência adequada -- então, por e-
xemplo, se houver algum problema num dos últimos passos do
processamento, seria necessário 'voltar' ao estado original
(desalocando memória, fechando arquivos, emitindo mensagens
de erro, etc.), e precisa ser feito imediatamente (se a me-
mória não pôde ser alocada, ler o arquivo vai causar uma fa-
lha de segmentação). Em C, cada linha de código necessitaria
de uma série de 'ifs' logo em seguida para checar cada pos-
sibilidade. A implementação da lógica do programa ficaria
soterrada pelas checagens de erro, tornando a manutenção mui-
to, muito mais complicada. Só escrever este parágrafo quase
me fez entrar em pânico. :)
Em Python -- e na verdade, em qualquer linguagem que conte-
nha tratamento de erros via exceções -- você coloca toda a
lógica do algoritmo sem precisar se preocupar com erros, co-
mo se eles não existissem. E, _após isso_, você especifica
como tratar cada erro que ocorreu. Não precisa se preocupar
com a ordem das coisas, ou se uma operação pode ou não ser
executada. A operação do bloco 'try' é imediatamente abor-
tada e levada ao bloco 'except' correspondente. Com isso, a
implementação fica extremamente mais limpa, fácil de ler, mo-
dificar e manter.
Nesse caso, voltando ao tópico original, o uso de exceções
novas (criadas pelo programador) não apenas é útil como mui-
tas vezes recomendável. Permite ao programador isolar as con-
dições de erro que podem ocorrer, permitindo um tratamento
mais adequado -- e além disso serve como 'documentação inter-
na': uma exceção com um bom nome indica o tipo de erro que
pode acontecer na execução de um programa. Não consigo pen-
sar em um exemplo realmente simples neste momento para mos-
trar o código, mas já usei essa habilidade da linguagem em
diversas situações.
--
José Alexandre Nalon
na...@terra.com.br
Site sobre software livre, cultura, arte, gimp, inkscape, wallpapers, vim, firefox, python, e-books, algoritmos, openoffice, ubuntu, debian, gnome, inkscape, bash, shell script, música, arte, mpb, dicas em geral, Geopolítica, politica, brasil, blogsfera, ativismo, rock, english
Porque usar excessões?
Uma discussão interessante levantada (já que estamos falando de excessões) no grupo de discussão python é sobre os motivos para se usar excessões. Dentre as respostas uma me chamou atenção:
Assinar:
Postar comentários (Atom)
linux-cookbook
Participe do grupo linux-cookbook |
Visitar este grupo |
Nenhum comentário:
Postar um comentário
Insira seu comentário - O mesmo será submetido à aprovação!