Exceções integradas em Python
Todas as instâncias em Python devem ser instâncias de uma classe que deriva de BaseException . Duas classes de exceção que não estão relacionadas por meio de subclasses nunca são equivalentes, mesmo se tiverem o mesmo nome. As exceções integradas podem ser geradas pelo interpretador ou funções integradas.
Existem várias exceções integradas em Python que são geradas quando ocorrem erros. Essas exceções integradas podem ser visualizadas usando as funções integradas local() da seguinte maneira:
>>> locais() ['__ builtins__']
Isso retorna um dicionário de exceções, funções e atributos integrados.
Classes básicas
As seguintes exceções são usadas principalmente como classes base para outras exceções.
- exceção BaseException
Esta é a classe base para todas as exceções internas . Ele não deve ser herdado diretamente por classes definidas pelo usuário. Para classes definidas pelo usuário, Exception é usado. Esta classe é responsável por criar uma representação string da exceção usando str() usando os argumentos passados. Uma string vazia é retornada se não houver argumentos.- args: os args são a tupla de argumentos fornecidos ao construtor de exceção.
- with_traceback (tb): Este método é geralmente usado no tratamento de exceções. Este método define tb como o novo traceback para a exceção e retorna o objeto de exceção.
Código:
tentar: ... exceto SomeException: tb = sys.exc_info() [2] levantar OtherException (...). with_traceback (tb)
- exceção Exceção
Esta é a classe base para todas as exceções integradas que não saem do sistema. Todas as exceções definidas pelo usuário também devem ser derivadas desta classe. - exceção ArithmeticError
Esta classe é a classe base para as exceções integradas que são geradas para vários erros aritméticos, como:- OverflowError
- ZeroDivisionError
- FloatingPointError
Exemplo:
filter_noneeditar
fecharplay_arrow
link
brilho_4
códigotry
:
a
=
10
/
0
print
(a)
except
ArithmeticError:
print
(
"This statement is raising an arithmetic exception."
)
else
:
print
(
"Success."
)
chevron_rightfilter_noneResultado :
Esta declaração está gerando uma exceção aritmética.
- exceção BufferError
Esta exceção é gerada quando as operações relacionadas ao buffer não podem ser executadas. - exceção LookupError
Esta é a classe base para as exceções que são levantadas quando uma chave ou índice usado em um mapeamento ou sequência é inválido ou não foi encontrado. As exceções levantadas são:- KeyError
- IndexError
Exemplo:
filter_noneeditar
fecharplay_arrow
link
brilho_4
códigotry
:
a
=
[
1
,
2
,
3
]
print
(a[
3
])
except
LookupError:
print
(
"Index out of bound error."
)
else
:
print
(
"Success"
)
chevron_rightfilter_noneResultado :
Erro de índice fora do limite.
Exceções concretas
As exceções a seguir são aquelas que geralmente são geradas.
- exceção AssertionError
Um AssertionError é gerado quando uma instrução assert falha.Exemplo:
assert False, 'A declaração falhou'
Resultado :
Traceback (última chamada mais recente): Arquivo "exceptions_AssertionError.py", linha 12, em assert False, 'A declaração falhou' AssertionError: a declaração falhou
- exceção AttributeError
Um AttributeError é gerado quando uma referência de atributo ou atribuição falha, como quando um atributo inexistente é referenciado.Exemplo:
filter_noneeditar
fecharplay_arrow
link
brilho_4
códigoclass
Attributes(
object
):
pass
object
=
Attributes()
print
(
object
.attribute)
chevron_rightfilter_noneResultado :
Traceback (última chamada mais recente): Arquivo "d912bae549a2b42953bc62da114ae7a7.py", linha 5, em imprimir objeto.atributo AttributeError: o objeto 'Atributos' não tem nenhum atributo 'atributo'
- exceção EOFError
Um EOFError é gerado quando funções integradas como input() atingem uma condição de fim de arquivo (EOF) sem ler nenhum dado. Os métodos de arquivo como readline() retornam uma string vazia quando atingem EOF.Exemplo:
filter_noneeditar
fecharplay_arrow
link
brilho_4
códigowhile
True
:
data
=
input
(
'Enter name : '
)
print
(
'Hello '
, data)
chevron_rightfilter_noneResultado :
Digite o nome: Hello Aditi Digite o nome: Traceback (última chamada mais recente): Arquivo "exceptions_EOFError.py", linha 13, em data = raw_input ('Digite o nome:') EOFError: EOF ao ler uma linha
- exceção FloatingPointError
Um FloatingPointError é gerado quando uma operação de ponto flutuante falha. Esta exceção é sempre definida, mas só pode ser gerada quando Python é configurado com a opção – with-fpectl ou o símbolo WANT_SIGFPE_HANDLER é definido no arquivo pyconfig.h.Exemplo:
filter_noneeditar
fecharplay_arrow
link
brilho_4
códigoimport
math
print
(math.exp(
1000
))
chevron_rightfilter_noneResultado :
Traceback (última chamada mais recente): Arquivo "", linha 1, em FloatingPointError: em math_1
- exceção GeneratorExit
Esta exceção herda diretamente de BaseException em vez de Exception, pois tecnicamente não é um erro. Uma exceção GeneratorExit é gerada quando um gerador ou co-rotina é fechado.Exemplo:
filter_noneeditar
fecharplay_arrow
link
brilho_4
códigodef
my_generator():
try
:
for
i
in
range
(
5
):
print
(
'Yielding'
, i)
yield
i
except
GeneratorExit:
print
(
'Exiting early'
)
g
=
my_generator()
print
(g.
next
())
g.close()
chevron_rightfilter_noneResultado :
Rendendo 0 Saindo cedo
- exceção ImportError
Um ImportError é gerado quando a instrução de importação não consegue carregar um módulo ou quando a “lista da” em de… importação tem um nome que não pode ser encontrado.Exemplo:
filter_noneeditar
fecharplay_arrow
link
brilho_4
códigoimport
module_does_not_exist
chevron_rightfilter_noneResultado :
Traceback (última chamada mais recente): Arquivo "exceptions_ImportError_nomodule.py", linha 12, em import module_does_not_exist ImportError: Nenhum módulo denominado module_does_not_exist
Exemplo:
filter_noneeditar
fecharplay_arrow
link
brilho_4
códigofrom
exceptions
import
Userexception
chevron_rightfilter_noneResultado :
Traceback (última chamada mais recente): Arquivo "exceptions_ImportError_missingname.py", linha 12, em de exceções importar Userexception ImportError: não é possível importar o nome Userexception
- exceção ModuleNotFoundError
Esta é a subclasse de ImportError que é gerada por import quando um módulo não pode ser encontrado. Ele também é gerado quando None é encontrado em sys.modules. - exceção IndexError
Um IndexError é gerado quando uma sequência é referenciada e está fora do intervalo.Exemplo:
filter_noneeditar
fecharplay_arrow
link
brilho_4
códigoarray
=
[
0
,
1
,
2
]
print
(array[
3
])
chevron_rightfilter_noneResultado :
Traceback (última chamada mais recente): Arquivo "exceptions_IndexError.py", linha 13, em matriz de impressão [3] IndexError: índice da lista fora do intervalo
- exceção KeyError
Um KeyError é gerado quando uma chave de mapeamento não é encontrada no conjunto de chaves existentes.Exemplo:
filter_noneeditar
fecharplay_arrow
link
brilho_4
códigoarray
=
{
'a'
:
1
,
'b'
:
2
}
print
(array[
'c'
])
chevron_rightfilter_noneResultado :
Traceback (última chamada mais recente): Arquivo "exceptions_KeyError.py", linha 13, em matriz de impressão ['c'] KeyError: 'c'
- exceção KeyboardInterrupt
Este erro é gerado quando o usuário pressiona a tecla de interrupção, como Control-C ou Delete.
Exemplo:
filter_noneeditar
fecharplay_arrow
link
brilho_4
códigotry
:
print
(
'Press Return or Ctrl-C:'
,)
ignored
=
input
()
except
Exception, err:
print
(
'Caught exception:'
, err)
except
KeyboardInterrupt, err:
print
(
'Caught KeyboardInterrupt'
)
else
:
print
(
'No exception'
)
chevron_rightfilter_noneResultado :
Pressione Return ou Ctrl-C: ^ CCaught KeyboardInterrupt
- exceção MemoryError
Este erro é gerado quando uma operação fica sem memória.Exemplo:
filter_noneeditar
fecharplay_arrow
link
brilho_4
códigodef
fact(a):
factors
=
[]
for
i
in
range
(
1
, a
+
1
):
if
a
%
i
=
=
0
:
factors.append(i)
return
factors
num
=
600851475143
print
(fact(num))
chevron_rightfilter_noneResultado :
Traceback (última chamada mais recente): Arquivo "4af5c316c749aff128df20714536b8f3.py", linha 9, em imprimir fato (num) Arquivo "4af5c316c749aff128df20714536b8f3.py", linha 3, na verdade para i no intervalo (1, a + 1): MemoryError
- exceção NameError
Este erro é gerado quando um nome local ou global não é encontrado. Por exemplo, um nome de variável não qualificado.Exemplo:
filter_noneeditar
fecharplay_arrow
link
brilho_4
códigodef
func():
print
ans
func()
chevron_rightfilter_noneResultado :
Traceback (última chamada mais recente): Arquivo "cfba0a5196b05397e0a23b1b5b8c7e19.py", linha 4, em função() Arquivo "cfba0a5196b05397e0a23b1b5b8c7e19.py", linha 2, na função imprimir ans NameError: nome global 'ans' não está definido
- exceção NotImplementedError
Esta exceção é derivada de RuntimeError. Métodos abstratos em classes definidas pelo usuário devem gerar esta exceção quando as classes derivadas substituem o método.Exemplo:
filter_noneeditar
fecharplay_arrow
link
brilho_4
códigoclass
BaseClass(
object
):
def
__init__(
self
):
super
(BaseClass,
self
).__init__()
def
do_something(
self
):
raise
NotImplementedError(
self
.__class__.__name__
+
'.do_something'
)
class
SubClass(BaseClass):
def
do_something(
self
):
print
(
self
.__class__.__name__
+
' doing something!'
)
SubClass().do_something()
BaseClass().do_something()
chevron_rightfilter_noneResultado :
Traceback (última chamada mais recente): Arquivo "b32fc445850cbc23cd2f081ba1c1d60b.py", linha 16, em BaseClass(). Do_something() Arquivo "b32fc445850cbc23cd2f081ba1c1d60b.py", linha 7, em do_something aumentar NotImplementedError (self .__ class __.__ name__ + '.do_something') NotImplementedError: BaseClass.do_something
- exceção OSError ([arg])
A exceção OSError é gerada quando uma função do sistema retorna um erro relacionado ao sistema, incluindo falhas de E / S, como erros de “arquivo não encontrado” ou “disco cheio”.Exemplo:
filter_noneeditar
fecharplay_arrow
link
brilho_4
códigodef
func():
print
(ans)
func()
chevron_rightfilter_noneResultado :
Traceback (última chamada mais recente): Arquivo "442eccd7535a2704adbe372cb731fc0f.py", linha 4, em imprimir i, os.ttyname (i) OSError: [Errno 25] ioctl inadequado para o dispositivo
- exceção OverflowError
O OverflowError é gerado quando o resultado de uma operação aritmética está fora do intervalo. Os inteiros aumentam MemoryError em vez de OverflowError. OverflowError às vezes é gerado para inteiros que estão fora de um intervalo obrigatório. As operações de ponto flutuante não são verificadas devido à falta de padronização do tratamento de exceção de ponto flutuante em C.Exemplo:
filter_noneeditar
fecharplay_arrow
link
brilho_4
códigoimport
sys
print
(
'Regular integer: (maxint=%s)'
%
sys.maxint)
try
:
i
=
sys.maxint
*
3
print
(
'No overflow for '
,
type
(i),
'i ='
, i)
except
OverflowError, err:
print
(
'Overflowed at '
, i, err)
print
()
print
(
'Long integer:'
)
for
i
in
range
(
0
,
100
,
10
):
print
(
'%2d'
%
i,
2L
*
*
i)
print
()
print
(
'Floating point values:'
)
try
:
f
=
2.0
*
*
i
for
i
in
range
(
100
):
print
(i, f)
f
=
f
*
*
2
except
OverflowError, err:
print
(
'Overflowed after '
, f, err)
chevron_rightfilter_noneResultado :
Número inteiro regular: (maxint = 9223372036854775807) Sem estouro para i = 27670116110564327421 Inteiro longo: 0 1 10 1024 20 1048576 30 1073741824 40 1099511627776 50 1125899906842624 60 1152921504606846976 70 1180591620717411303424 80 1208925819614629174706176 90 1237940039285380274899124224 Valores de ponto flutuante: 0 1.23794003929e + 27 1 1.53249554087e + 54 2 2.34854258277e + 108 3 5.5156522631e + 216 Transbordou após 5.5156522631e + 216 (34, 'Resultado numérico fora do intervalo')
- exceção RecursionError
O RecursionError é derivado do RuntimeError. Essa exceção é gerada quando o interpretador detecta que a profundidade máxima de recursão foi excedida. - exceção ReferenceError
O ReferenceError é gerado quando um proxy de referência fraca é usado para acessar um atributo do referente após a coleta de lixo.Exemplo:
filter_noneeditar
fecharplay_arrow
link
brilho_4
códigoimport
gc
import
weakref
class
Foo(
object
):
def
__init__(
self
, name):
self
.name
=
name
def
__del__(
self
):
print
(
'(Deleting %s)'
%
self
)
obj
=
Foo(
'obj'
)
p
=
weakref.proxy(obj)
print
(
'BEFORE:'
, p.name)
obj
=
None
print
(
'AFTER:'
, p.name)
chevron_rightfilter_noneResultado :
ANTES: obj (Excluindo) DEPOIS DE: Traceback (última chamada mais recente): Arquivo "49d0c29d8fe607b862c02f4e1cb6c756.py", linha 17, em imprimir 'DEPOIS:', p.nome ReferenceError: o objeto fracamente referenciado não existe mais
- exceção RuntimeError
O RuntimeError é gerado quando nenhuma outra exceção se aplica. Ele retorna uma string indicando o que exatamente deu errado. - exceção StopIteration
O erro StopIteration é gerado pela função interna next() e pelo método __next __() de um iterador para sinalizar que todos os itens são produzidos pelo iterador.Exemplo:
filter_noneeditar
fecharplay_arrow
link
brilho_4
códigoArr
=
[
3
,
1
,
2
]
i
=
iter
(Arr)
print
(i)
print
(i.
next
())
print
(i.
next
())
print
(i.
next
())
print
(i.
next
())
chevron_rightfilter_noneResultado :
3 1 2 Traceback (última chamada mais recente): Arquivo "2136fa9a620e14f8436bb60d5395cc5b.py", linha 8, em imprimir i.next() StopIteration
- exceção SyntaxError
O SyntaxError é gerado quando o analisador encontra um erro de sintaxe. Um erro de sintaxe pode ocorrer em uma instrução de importação ou ao chamar as funções internas exec() ou eval(), ou ao ler o script inicial ou a entrada padrão.Exemplo:
filter_noneeditar
fecharplay_arrow
link
brilho_4
códigotry
:
print
(
eval
(
'geeks for geeks'
))
except
SyntaxError, err:
print
(
'Syntax error %s (%s-%s): %s'
%
\
(err.filename, err.lineno, err.offset, err.text))
print
(err)
chevron_rightfilter_noneResultado :
Erro de sintaxe (1-9): geeks para geeks sintaxe inválida (linha 1)
- exceção SystemError
O SystemError é gerado quando o interpretador encontra um erro interno. O valor associado é uma string que indica o que deu errado. - exceção SystemExit
O SystemExit é gerado quando a função sys.exit() é chamada. Uma chamada para sys.exit() é traduzida em uma exceção para executar manipuladores de limpeza (cláusulas finalmente de instruções try) e para depurar um script sem correr o risco de perder o controle. - exceção TypeError
TypeError é gerado quando uma operação ou função é aplicada a um objeto de tipo inadequado. Esta exceção retorna uma string com detalhes sobre a incompatibilidade de tipo.Exemplo:
filter_noneeditar
fecharplay_arrow
link
brilho_4
códigoarr
=
(
'tuple'
, )
+
'string'
print
(arr)
chevron_rightfilter_noneResultado :
Traceback (última chamada mais recente): Arquivo "30238c120c0868eba7e13a06c0b1b1e4.py", linha 1, em arr = ('tupla',) + 'string' TypeError: só pode concatenar tupla (não "str") para tupla
- exceção UnboundLocalError
UnboundLocalError é uma subclasse de NameError que é gerada quando uma referência é feita a uma variável local em uma função ou método, mas nenhum valor foi atribuído a essa variável.Exemplo:
filter_noneeditar
fecharplay_arrow
link
brilho_4
códigodef
global_name_error():
print
(unknown_global_name)
def
unbound_local():
local_val
=
local_val
+
1
print
(local_val)
try
:
global_name_error()
except
NameError, err:
print
(
'Global name error:'
, err)
try
:
unbound_local()
except
UnboundLocalError, err:
print
(
'Local name error:'
, err)
chevron_rightfilter_noneResultado :
Erro de nome global: o nome global 'unknown_global_name' não foi definido Erro de nome local: variável local 'local_val' referenciada antes da atribuição
- exceção UnicodeError
Esta exceção é uma subclasse de ValueError. UnicodeError é gerado quando ocorre um erro de codificação ou decodificação relacionado a Unicode. - exceção ValueError
Um ValueError é gerado quando uma operação ou função interna recebe um argumento que tem o tipo correto, mas um valor inválido.Exemplo:
filter_noneeditar
fecharplay_arrow
link
brilho_4
códigoprint
(
int
(
'a'
))
chevron_rightfilter_noneResultado :
Traceback (última chamada mais recente): Arquivo "44f00efda935715a3c5468d899080381.py", linha 1, em print int ('a') ValueError: literal inválido para int() com base 10: 'a'
- exceção ZeroDivisionError
Um ZeroDivisionError é gerado quando o segundo argumento de uma divisão ou operação de módulo é zero. Esta exceção retorna uma string que indica o tipo dos operandos e a operação.Exemplo:
filter_noneeditar
fecharplay_arrow
link
brilho_4
códigoprint
(
1
/
0
)
chevron_rightfilter_noneResultado :
Traceback (última chamada mais recente): Arquivo "c31d9626b41e53d170a78eac7d98cb85.py", linha 1, em imprimir 1/0 ZeroDivisionError: divisão inteira ou módulo por zero
Este artigo é uma contribuição de Aditi Gupta . Se você gosta de GeeksforGeeks e gostaria de contribuir, você também pode escrever um artigo usando contribute.geeksforgeeks.org ou enviar o seu artigo para contribute@geeksforgeeks.org. Veja o seu artigo que aparece na página principal do GeeksforGeeks e ajude outros Geeks.
Escreva comentários se encontrar algo incorreto ou se quiser compartilhar mais informações sobre o tópico discutido acima.
As postagens do blog Acervo Lima te ajudaram? Nos ajude a manter o blog no ar!
Faça uma doação para manter o blog funcionando.
70% das doações são no valor de R$ 5,00...
Diógenes Lima da Silva