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 0Cada tipo de falha é sua própria classe. Algumas comuns:
ZeroDivisionError: dividir um número inteiro por zeroArgumentError: 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.
Desafio
InicianteLeia 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-zero→ZeroDivisionErrornil-method→NoMethodErrorbad-integer→ArgumentErrorwrong-type→TypeError- 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
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
1Strings a Fundo
Visão Geral de Métodos de StringInterpolação de StringsIterando sobre StringsSplit e JoinRecapitulação - String Weaver4Blocos, Procs e Lambdas
O que é um Bloco?do..end vs ChavesA palavra-chave yieldParâmetros de BlocoProcs e LambdasRecapitulação - Iterador Customizado7Hashes Parte 2
Hash.new com Valores PadrãoIterando em HashesHashes AninhadosMesclando e TransformandoRecapitulação - Contador de Frequência10Projeto - Registros de Alunos
Visão Geral do ProjetoAdicionar Aluno2Intervalos
O que é um Intervalo?Métodos de IntervaloIntervalos em Case / WhenRecapitulação - Prática com Intervalos5O Poder do Enumerable
Select e RejectEncadeando o MapReduce / Injectcount, all?, any?, none?group_by e partitionsort_by, min_by, max_byRecapitulação - Data Pipeline3Arrays 2D
Fundamentos de Arrays 2DAcessando Elementos 2DIterando sobre Arrays 2DPadrões 2D ComunsRecapitulação - Operações com Matrizes6Projeto - Gerenciador de Biblioteca
Visão Geral do ProjetoAdicionar Livro9Tratamento de Erros
O que é uma Exceção?begin / rescueMúltiplas Cláusulas rescueensure e raiseRecapitulação - Calculadora SeguraPratique por conta própria: Compilador de Ruby online