Menu
Coddy logo textTech

Tratando Múltiplas Exceções

Parte da seção Logic & Flow do Journey de Python da Coddy — lição 65 de 78.

Em Python, podemos tratar diferentes tipos de exceções em blocos except separados. Isso nos permite responder de forma diferente com base no erro específico que ocorre.

Comece com uma estrutura básica try-except:

try:
    # Code that might raise exceptions
    pass
except Exception as e:
    # Handle any exception
    pass

Para lidar com múltiplas exceções, adicione blocos except específicos:

try:
    number = int(input("Enter a number: "))
    result = 10 / number
    print(result)
except ValueError:
    print("That's not a valid number!")
except ZeroDivisionError:
    print("Cannot divide by zero!")

Você também pode capturar múltiplos tipos de exceção em um único bloco except:

try:
    # Some code
    pass
except (ValueError, TypeError):
    print("Invalid input type!")

A ordem dos blocos except importa - sempre coloque exceções mais específicas antes das mais genéricas.

challenge icon

Desafio

Fácil

Crie uma função chamada process_data que:

  1. Recebe uma string de entrada representando dados potenciais
  2. Tenta convertê-la para um número inteiro e, em seguida, calcula 100 dividido por esse inteiro
  3. Retorna o resultado
  4. Trata pelo menos 3 exceções possíveis: 
    • ValueError se a entrada não puder ser convertida para um inteiro (imprima "Input must be a number!")
    • ZeroDivisionError se a entrada for 0 (imprima "Cannot divide by zero!")
    • Qualquer outra exceção com um manipulador genérico (imprima "An unexpected error occurred!")

Folha de consulta

Lide com diferentes tipos de exceções usando múltiplos blocos except:

try:
    number = int(input("Enter a number: "))
    result = 10 / number
    print(result)
except ValueError:
    print("That's not a valid number!")
except ZeroDivisionError:
    print("Cannot divide by zero!")

Capture múltiplos tipos de exceção em um único bloco except:

try:
    # Algum código
    pass
except (ValueError, TypeError):
    print("Invalid input type!")

Sempre coloque exceções mais específicas antes das mais genéricas na ordem dos blocos except.

Experimente você mesmo

def process_data(input_string):
    try:
        # Tenta converter a string de entrada para um número inteiro
        
        # Calcula 100 dividido pelo valor de entrada
        
        # Retorna o resultado
        
    except ValueError:
        # Trata o caso onde a entrada não pode ser convertida para um número inteiro
        
    except ZeroDivisionError:
        # Trata o caso onde a entrada é zero
        
    except:
        # Trata quaisquer outras exceções inesperadas
        
    return None
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Logic & Flow