0Pricing
Python Academy · Aula

try / except / else / finally

Estruture blocos de tratamento de exceções para qualquer situação.

try / except / else / finally é uma aula grátis de Python Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Python Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Python Academy inclui 4 aulas no total.

Introdução

O try/except/else/finally do Python oferece controle completo sobre o tratamento de erros e a limpeza de recursos.

try/except básico

try: risky_code() except ExceptionType: handle() — o Python executa o bloco except somente quando esse tipo de exceção é gerado.
try:
    x = int('abc')
except ValueError:
    print('not a number')

Capturando o objeto de exceção

except ValueError as e: associa a exceção a e. Use str(e) ou e.args para obter a mensagem.
try:
    int('oops')
except ValueError as e:
    print(f'Error: {e}')

Capturando várias exceções

except (TypeError, ValueError) as e: captura qualquer um dos dois tipos.
for val in ['abc', None, 42]:
    try:
        print(int(val))
    except (TypeError, ValueError) as e:
        print(f'skipping {val!r}: {e}')

except sem tipo (evite-o)

except: (sem tipo) captura EVERYTHING, incluindo KeyboardInterrupt e SystemExit. Quase sempre isso é um erro — sempre especifique os tipos.
try:
    risky = 1/0
except ZeroDivisionError:
    print('division error')  # specific

Várias cláusulas except

Você pode ter vários blocos except, cada um tratando um tipo diferente. O Python tenta executá-los na ordem.
def process(val):
    try:
        return 10 / int(val)
    except ValueError:
        print('not a number')
    except ZeroDivisionError:
        print('division by zero')
process('abc')
process('0')

Cláusula else

try/except/else: else é executado somente se NÃO tiver ocorrido nenhuma exceção. Use-o para o código que deve ser executado em caso de sucesso.
try:
    x = int('42')
except ValueError:
    print('bad input')
else:
    print('parsed:', x)

Cláusula finally

finally: é executado SEMPRE — depois que try tem sucesso, depois de except e até mesmo depois de return ou break. É perfeito para a limpeza de recursos.
def read_file(path):
    f = None
    try:
        f = open(path)
        return f.read()
    except FileNotFoundError:
        return None
    finally:
        if f: f.close()
print(read_file('/nonexistent'))

finally com return

Se houver tanto um return quanto um finally, finally é executado primeiro, mas o valor de retorno de finally prevalece. Tenha cuidado.
def demo():
    try:
        return 'try'
    finally:
        return 'finally'  # overrides!
print(demo())

Blocos try aninhados

Os blocos try podem ser aninhados. Uma exceção interna propaga-se para fora se não for capturada pelo except interno.
try:
    try:
        x = 1/0
    except ValueError:
        print('inner')
except ZeroDivisionError:
    print('outer caught it')

Registrando exceções

import logging; logging.exception('msg') registra o rastreamento de execução completo. É perfeito para código em produção.
import logging
try:
    1/0
except ZeroDivisionError:
    logging.exception('Caught an error')

Verificação rápida

Qual cláusula é executada independentemente de ter ocorrido uma exceção?

Recapitulação

try/except captura erros. else é executado em caso de sucesso. finally é sempre executado (limpeza). Capture tipos específicos; evite except sem tipo. Use as e para acessar a exceção.

Continue avançando

Excelente trabalho! Passe à próxima lição para continuar avançando.

Perguntas Frequentes

A aula “try / except / else / finally” é grátis?

Sim — o texto completo de “try / except / else / finally” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Python Academy, atualize para CoddyKit PRO. O curso de Python Academy inclui 4 aulas no total.

O que vou aprender em “try / except / else / finally”?

Estruture blocos de tratamento de exceções para qualquer situação. Você pratica Python Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Python Academy?

Nenhuma experiência prévia é necessária. Python Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.

Quanto tempo leva a aula “try / except / else / finally”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Python Academy?

Sim. Cada aula de Python Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Entendendo as exceções
  2. try / except / else / finally
  3. Geração e repropagação de exceções
  4. Classes de exceção personalizadas
← Voltar para Python Academy