Objetivos
        
    
    
    
        
Exception/Exceção
    
    
        
            
                Uma exceção, é um evento ou acontecimento não desejado que pode ocorrer durante a execução 
                de nossos programas em Python, como erros de acesso a memória, falhas ao abrir um arquivo e outros. 
            
            
                Quando esse exceção acontece, um objeto de um tipo de exceção é lançado para tenhamos conhecimento
                de que um tratamento deve ser feito. Esse objeto contém as informações sobre o erro ocorrido.
            
            
         
     
    
        Recuperando informações de uma exception
        
     
    
        
            
                Quando uma exceção ocorre, precisamos obter algumas informações básicas como: a mensagem do erro, 
                onde o erro ocorreu e outros.  
            
            
                Abaixo, recuperarmos a informação de mensagem e tipo da exceção lançada. Outros informações podem
                ser conferidas no traceback que será visto mais adiante.
            
            Exemplo 1
            
try:
    print(1/0)
except Exception as e:
    print("mensagem:",e) #mensagem
    print("classe:",e.__class__) #nome da class
            Saída
            
mensagem: division by zero
classe: <class 'ZeroDivisionError'>
         
     
    
    
        
            
                O Traceback armazena todas as chamadas e funções feitas em nossos programas até a 
                linha em que uma exceção foi lançada. 
            
            
                Como Traceback funciona como uma Stack(Pilha), as chamadas são armazenadas umas 
                sobres as outras, sendo a linha que lançou uma exceção como a última. 
            
            
                Para utilizarmos o Traceback, precisamos inicialmente importar seu módulo como abaixo:
            
            Sintaxe 
            
import traceback
            
                Para exibir exibir as informações do traceback, precisamos invocar seu método print.exc
            
            Sintaxe 
            
traceback.print_exc()
            Exemplo 2
            
import traceback
try:
    print(1/0)
except Exception:
    traceback.print_exc()
            Saída
            
Traceback (most recent call last):
  File "/home/main.py", line 4, in 
    print(1/0)
ZeroDivisionError: division by zero
            
            
         
     
    
    
        
            
                Para lançarmos uma exceção explicitamente em nossos programas em Python, utilizamos o comando 
                raise seguindo de uma instância da exceção que desejamos lançar. 
            
            Sintaxe 
            
raise classe_excecao(mensagem_erro)
            Onde
            mensagem_erro: mensagem de erro customizada para informação
            Exemplo 2
            
import traceback
try:
    raise ZeroDivisionError("Ocorreu um erro")
except Exception as e:
    traceback.print_exc()
            Saída
            
Traceback (most recent call last):
  File "/home/main.py", line 4, in 
    raise ZeroDivisionError("Ocorreu um erro")
ZeroDivisionError: Ocorreu um erro
         
     
    
    
        
            
                No exemplo 2 anterior, utilizamos o comando raise para lançar uma exceção de forma 
                explícita. 
            
            
                Em alguns momentos, quando o tratamento da exceção não pode ser tratada, por algum motivo, em seu 
                respectivo bloco catch.
            
            
                Quando o que foi discutido acima ocorre, podemos relançar uma exceção para um escopo acima do 
                atual utilizado o mesmo comando raise. 
            
            Sintaxe
            
raise variavel_excecao 
            Exemplo 3
            
def funcao():
    try:
        print(1/0)
    except Exception as e:
        raise e # relançando exception
try:
    funcao()
except ZeroDivisionError as e: #capturando exception relançada
    print(e)
            Saída
            
division by zero
            
                Caso uma nova exceção seja lançada ou invés de relançada, as informações do traceback 
                referentes ao erro anterior serão perdidos.
            
         
     
    
    
        
            
                A linguagem Python possuim várias execeções nativas. Abaixo uma lista das mais comuns que podem
                ser utilizadas:
            
            
                Tab. 1: Exceções mais comuns
                
                    
                        | Nome | 
                        Descrição | 
                    
                
                
                    
                        | AssertionError | 
                        Lançada quando há erro em um assert | 
                    
                    
                        | AttributeError | 
                        Lançada quando há erro ao atribuição ou referência | 
                    
                    
                        | EOFError | 
                        Lançada quando função input alcança a condição EOF | 
                    
                    
                        | FloatingPointError | 
                        Lançada quando há erro de ponto flutuante | 
                    
                    
                        | GeneratorExit | 
                        Lançada quando há erro  | 
                    
                    
                        | ImportError | 
                        Lançada quando há erro ao importa módulo | 
                    
                    
                        | IndexError | 
                        Lançada quando um índice está fora do intervalo | 
                    
                    
                        | KeyError | 
                        Lançada quando uma chave não existe em um dicionário | 
                    
                    
                        | KeyboardInterrupt | 
                        Lançada quando Ctrl-C ou Delete é pressionado | 
                    
                    
                        | MemoryError | 
                        Lançada quando não há mais memória | 
                    
                    
                        | NameError | 
                        Lançada quando uma variável não é encontrada | 
                    
                    
                        | NotImplementedError | 
                        Lançada por métodos abstratos | 
                    
                    
                        | OSError | 
                        Lançada quando há erro S.O lança um erro | 
                    
                    
                        | OverflowError | 
                        Lançada quando há erro em operação aritmética | 
                    
                    
                        | ReferenceError | 
                        - | 
                    
                    
                        | RuntimeError | 
                        Lançada quando o erro não associada a nenhum outro erro | 
                    
                    
                        | StopIteration | 
                        Lançada quando o método next não retorna mais itens | 
                    
                    
                        | SyntaxError | 
                        Lançada quando há erro de sintaxe no código | 
                    
                   
                        | IndentationError | 
                        Lançada quando há erro na identação no código | 
                    
                    
                        | TabError | 
                        Lançada quando há erro em tabulação e espaços na identação | 
                    
                    
                        | SystemError | 
                        - | 
                    
                    
                        | SystemExit | 
                        - | 
                    
                    
                        | TypeError | 
                        - | 
                    
                    
                        | UnboundLocalError | 
                        - | 
                    
                    
                        | UnicodeError | 
                        - | 
                    
                    
                        | UnicodeEncodeError | 
                        - | 
                    
                    
                        | UnicodeDecodeError | 
                        - | 
                    
                    
                        | UnicodeTranslateError | 
                        - | 
                    
                    
                        | ValueError | 
                        Lançada quando há erro ao atribuir valor a uma argumento de tipo diferente | 
                    
                    
                        | ZeroDivisionError | 
                        Lançada quando há erro de divisão por zero | 
                    
                
            
         
     
    
        
Histórico de atualizações
    
    
        
            
                - 12/09/2025 - revisão 3 - Ajustes: pontuais, sintaxes e objetivos
 
                - 18/09/2024 - revisão 1 - Ajustes gramaticais; outros ajustes
 
                - 19/02/2024 - versão inicial
 
            
         
     
    
            
            
                
                    
                    Os cursos oferecidos nesta página são cursos fornecidos por parceiros. Ao comprar um curso clicando
                em seu banner, você está ajudando a manter o projeto TutorialDev vivo. Os sites dos cursos parceiros utilizam cookies.