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.

Folha de consulta

Quando algo dá errado em tempo de execução, o Ruby lança uma exceção e o programa para. Classes de exceção comuns:

  • ZeroDivisionError: dividir um inteiro por zero
  • ArgumentError: argumentos incorretos (ex: Integer("abc"))
  • NoMethodError: chamar um método que o receptor não possui (ex: nil.upcase)
  • TypeError: operação no tipo errado de objeto (ex: "a" + 1)
10 / 0
# ZeroDivisionError: dividido por 0

Todo objeto de exceção possui um .message com uma descrição legível por humanos.

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