Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


Programando em Python - Excecoes, Notas de estudo de Informática

Tratando exceções em python

Tipologia: Notas de estudo

2011

Compartilhado em 25/03/2011

samuel-santos-22
samuel-santos-22 🇧🇷

4.6

(41)

262 documentos

1 / 24

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
Claudio Esperança
Python:
Exceções, Iteradores e Geradores
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18

Pré-visualização parcial do texto

Baixe Programando em Python - Excecoes e outras Notas de estudo em PDF para Informática, somente na Docsity!

Claudio Esperança

Python:

Exceções, Iteradores e Geradores

Exceções

 Quando um programa encontra dificuldades não

previstas, diz-se que uma condição excepcional ou uma

exceção ocorreu

 Um erro é uma exceção mas nem toda exceção é um erro

 Para poder representar tais eventos, Python define os

chamados objetos de exceção ( exception objects )

 Se a condição excepcional não é prevista (e tratada), o

programa termina com uma mensagem de rastreamento:

Traceback (most recent call last): File "<pyshell#0>", line 1, in -toplevel- 1/ ZeroDivisionError: integer division or modulo by zero

Avisos

 Existem condições excepcionais menos sérias que não

provocam o levantamento de um objeto de exceção, mas

apenas são exibidas sob a forma de um aviso

 Por exemplo,

import regex

Warning (from warnings module): File "main", line 1 DeprecationWarning: the regex module is deprecated; please use the re module  Neste caso, o intepretador nos sinaliza que o módulo regex é antigo e que foi substituido por outro mais atualizado chamado re

 O programa não falha, mas o programador fica ciente que provamelmente deve reescrever seu programa usando o módulo re para evitar obsolecência

O comando raise

 Para sinalizar a ocorrência de uma condição excepcional,

pode-se usar o comando raise que tem uma das formas:

 raise classe

 raise classe , mensagem

 raise classe ( mensagem )

 Onde classe é uma das classes de exceção definidas

pelo Python

 Para saber todos os tipos de exceção consulte o manual

 Se quiser uma classe genérica use a classe Exception

 Uma listagem pode ser obtida escrevendo

import exceptions dir(exceptions) ['ArithmeticError', 'AssertionError', 'AttributeError', ...

Algumas Classes de Exceção

Criando uma Classe de Exceção

 Basta criar uma classe da forma habitual derivando-a da

classe Exception

 Não é preciso redefinir qualquer método

 Ex.:

>>> class MinhaExcecao(Exception): pass

>>> raise MinhaExcecao("Deu bode!")

Traceback (most recent call last):

File "<pyshell#11>", line 1, in -toplevel-

raise MinhaExcecao("Deu bode!")

MinhaExcecao: Deu bode!

Exemplo 1

>>> try:

a = input("Entre com um numero ") b = input("Entre com outro numero ") print a, "/", b, "=", a/b

except ZeroDivisionError:

print "Ooops, segundo numero não pode ser zero!"

Entre com um numero 1

Entre com outro numero 0

1 / 0 = Ooops, segundo numero não pode ser zero!

Exemplo 2

>>> try:

a = input("Entre com um numero ") b = input("Entre com outro numero ")

print a, "/", b, "=", a/b

except (ZeroDivisionError,TypeError): print "Ooops, tente novamente!"

Entre com um numero 1

Entre com outro numero "a"

1 / a = Ooops, tente novamente!

Mais except

 É possível tratar diferentemente as diversas exceções

usando 2 ou mais cláusulas except

 Se quisermos nos prevenir contra qualquer tipo de erro,

podemos usar uma cláusula except sem nome de classe

 Outra opção é usar a classe Exception que é base para

todas as exceções e portanto casa com qualquer exceção

 Se não queremos tratar um erro em uma cláusula

except, podemos passá-la adiante usando o comando

raise

 Nesse caso, podemos usar um raise sem argumentos ou

passar explicitamente um objeto de exceção

Exemplo 4

>>> try:

a = input("Entre com um numero ") b = input("Entre com outro numero ") print a, "/", b, "=", a/b

except ZeroDivisionError:

print "Ooops, divisão por zero"

except TypeError:

print "Ooops, você não deu um número"

except:

print "Deu um bode qualquer"

Entre com um numero 2

Entre com outro numero fads

Deu um bode qualquer

A cláusula else

 É possível completar um comando try com uma cláusula

else que introduz um trecho de código que só é

executado quando nenhuma exceção ocorre:

try: Código except Exceções : Código de tratamento da exceção else: Código executado se não ocorrem exceções

Exemplo 6

while True:

try: a = input("Entre com um numero ") b = input("Entre com outro numero ") print a, "/", b, "=", a/b except Exception,e: print "Deu bode:",e print "Tente novamente" else: break

Entre com um numero 1 Entre com outro numero xxx Deu bode: name 'xxx' is not defined Tente novamente Entre com um numero 1 Entre com outro numero 2 1 / 2 = 0

Exemplo 7 (Python 2.5)

>>> try:

... x = input("Entre com um número")

... except:

... print "Deu Bode"

... finally:

... print "restabelecendo um valor para x"

... x = None

Entre com um número 1xx

Deu Bode

restabelecendo um valor para x

Exemplo 7 (Python 2.4)

>>> try:

... try:

... x = input("Entre com um número")

... finally:

... print "restabelecendo um valor para x"

... x = None

... except:

... print "Deu Bode"

Entre com um número 1xx

restabelecendo um valor para x

Deu Bode