Error handling | Python
- Error handling | Python
Tratamento de Erros | Python
O tratamento de erros em Python é uma prática essencial para garantir que seu programa possa lidar com situações inesperadas de maneira controlada. Em Python, utilizamos as instruções try, except, else e finally para capturar e gerenciar exceções.
Bloco try-except
O bloco try permite que você teste um bloco de código quanto a erros. O bloco except permite que você lide com o erro.
try:
# Código que pode gerar uma exceção
x = 1 / 0
except ZeroDivisionError:
# Código que será executado se ocorrer uma ZeroDivisionError
print("Não é possível dividir por zero!")
Bloco else
O bloco else permite que você execute código se não houver exceção.
try:
x = 1 / 1
except ZeroDivisionError:
print("Não é possível dividir por zero!")
else:
print("Divisão realizada com sucesso!")
Bloco finally
O bloco finally permite que você execute código, independentemente do resultado dos blocos try e except.
try:
x = 1 / 0
except ZeroDivisionError:
print("Não é possível dividir por zero!")
finally:
print("Bloco finally executado!")
Levantando Exceções
Você pode levantar (lançar) exceções usando a instrução raise.
x = -1
if x < 0:
raise ValueError("O valor não pode ser negativo!")
Exceções Personalizadas
Você pode criar suas próprias exceções definindo uma nova classe que herda de Exception. Isso permite que você adicione informações adicionais ou métodos personalizados à sua exceção.
class MinhaExcecao(Exception):
def __init__(self, mensagem, codigo):
super().__init__(mensagem)
self.codigo = codigo
try:
raise MinhaExcecao("Ocorreu um erro personalizado!", 404)
except MinhaExcecao as e:
print(f"Erro: {e} (Código: {e.codigo})")
ExceptionGroup e except*
adolfoIN: Escreva sobre error handling em python em portugues
GitHub Copilot: ```markdown
Tratamento de Erros | Python
O tratamento de erros em Python é uma prática essencial para garantir que seu programa possa lidar com situações inesperadas de maneira controlada. Em Python, utilizamos as instruções try, except, else e finally para capturar e gerenciar exceções.
Bloco try-except
O bloco try permite que você teste um bloco de código quanto a erros. O bloco except permite que você lide com o erro.
try:
# Código que pode gerar uma exceção
x = 1 / 0
except ZeroDivisionError:
# Código que será executado se ocorrer uma ZeroDivisionError
print("Não é possível dividir por zero!")
Bloco else
O bloco else permite que você execute código se não houver exceção.
try:
x = 1 / 1
except ZeroDivisionError:
print("Não é possível dividir por zero!")
else:
print("Divisão realizada com sucesso!")
Bloco finally
O bloco finally permite que você execute código, independentemente do resultado dos blocos try e except.
try:
x = 1 / 0
except ZeroDivisionError:
print("Não é possível dividir por zero!")
finally:
print("Bloco finally executado!")
Levantando Exceções
Você pode levantar (lançar) exceções usando a instrução raise.
x = -1
if x < 0:
raise ValueError("O valor não pode ser negativo!")
Exceções Personalizadas
Você pode criar suas próprias exceções definindo uma nova classe que herda de Exception.
class MinhaExcecao(Exception):
pass
try:
raise MinhaExcecao("Ocorreu um erro personalizado!")
except MinhaExcecao as e:
print(e)
ExceptionGroup e Exception*
A partir do Python 3.11, foi introduzido o ExceptionGroup e o except* para lidar com múltiplas exceções de forma mais eficiente.
ExceptionGroup
ExceptionGroup permite agrupar várias exceções em uma única exceção.
def func1():
raise ValueError("Erro de valor")
def func2():
raise TypeError("Erro de tipo")
try:
raise ExceptionGroup("Múltiplos erros", [func1(), func2()])
except ExceptionGroup as eg:
for exc in eg.exceptions:
print(f"Exceção capturada: {exc}")
except*
O except* permite capturar exceções específicas dentro de um ExceptionGroup.
def func1():
raise ValueError("Erro de valor")
def func2():
raise TypeError("Erro de tipo")
try:
raise ExceptionGroup("Múltiplos erros", [func1(), func2()])
except* ValueError as e:
print(f"Capturado ValueError: {e}")
except* TypeError as e:
print(f"Capturado TypeError: {e}")