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

Pratique por conta própria: Compilador de Ruby online