Menu
Coddy logo textTech

O que é uma Exceção?

Parte da seção Lógica e Fluxo do Journey de Ruby da Coddy — lição 43 de 56.

Quando algo dá errado em tempo de execução, como dividir por zero, analisar "abc" como um número inteiro ou chamar um método em nil: o Ruby lança uma exceção. O programa para, e o Ruby imprime o que aconteceu junto com onde aconteceu.

10 / 0
# ZeroDivisionError: dividido por 0

Cada tipo de falha é sua própria classe. Algumas comuns:

  • ZeroDivisionError: dividir um número inteiro por zero
  • ArgumentError: argumentos incorretos passados para um método (Integer("abc"))
  • NoMethodError: chamar um método que o receptor não possui (nil.upcase)
  • TypeError: operação em um tipo incorreto de objeto ("a" + 1)

Toda classe de exceção possui um .message: a descrição legível por humanos que o Ruby imprime quando a exceção não é tratada. As próximas lições mostram como capturar essas exceções para que seu programa continue em execução.

challenge icon

Desafio

Iniciante

Leia uma única linha de entrada, o nome de uma única expressão Ruby. Imprima o nome da classe de exceção que o Ruby lançaria para ela. Use uma instrução case (não é necessário lançar a exceção de verdade):

  • divide-by-zeroZeroDivisionError
  • nil-methodNoMethodError
  • bad-integerArgumentError
  • wrong-typeTypeError
  • qualquer outra coisa → Unknown

Para a entrada nil-method, a saída é NoMethodError.

Experimente você mesmo

kind = gets.chomp

# TODO: case kind ... imprima o nome da classe de exceção correspondente
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 Lógica e Fluxo