21.12.2022 Views

python_para_desenvolvedores_2ed

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

88 Exceções

# Numerando as linhas

for i, s in enumerate(file(fn)):

print i + 1, s,

# Se ocorrer um erro

except:

# Mostre na tela

trace = traceback.format_exc()

# E salve num arquivo

print 'Aconteceu um erro:\n', trace

file('trace.log', 'a').write(trace)

# Encerre o programa

raise SystemExit

O módulo traceback oferece funções para manipular as mensagens de erro. A

função format_exc retorna a saída da última exceção formatada em uma string.

O tratamento de exceções pode possuir um bloco else, que será executado

quando não ocorrer nenhuma exceção e um bloco finally, será executado de

qualquer forma, tendo ocorrido uma exceção ou não 21 . Novos tipos de

exceções podem ser definidos através de herança a partir da classe Exception.

A partir da versão 2.6, está disponível a instrução with, que pode substituir a

combinação try / finally em várias situações. Com with, podemos definir um

objeto que será usado durante a execução do bloco. O objeto precisa suportar

o protocolo de gerenciamento de contexto, o que significa que ele deve

possuir um método __enter__(), que é executado no inicio do bloco, e outro

chamado __exit__(), que é evocado ao final do bloco.

Exemplo:

# -*- coding: latin-1 -*-

21 A declaração finally pode ser usada para liberar recursos que foram usados no bloco try,

tais como conexões de banco de dados ou arquivos abertos.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!