Gestão de exceções Ruby
O curso trata do tratamento de exceções em Ruby. Ele começa pelo raise e pelo objeto de exceção, uma instância de classe com classe e mensagem próprias. Depois mostra begin e rescue para capturar uma classe específica, a ordem de várias cláusulas rescue e o limite do rescue sem classe em StandardError. As aulas seguintes explicam else e ensure, classes de exceção próprias e suas hierarquias, e como resgatar pelo nome exceções do Rails como ActiveRecord::RecordNotFound e ActiveRecord::RecordInvalid. Um método final junta todas as peças.
O que você vai aprender
- ✓Como o raise interrompe a execução e sobe pelos métodos chamadores
- ✓Capturar uma classe de exceção específica com begin e rescue
- ✓Por que o rescue sem classe para em StandardError e ignora SignalException e SystemExit
- ✓Usar else para execuções sem erro e ensure para limpeza em qualquer caminho
- ✓Definir classes de exceção próprias e suas hierarquias
- ✓Resgatar exceções do Rails pelo nome e ler e.record e e.param
raise e o objeto exception
Num curso anterior, um código seu levantou ActiveRecord::RecordNotFound ou ActiveModel::ForbiddenAttributesError. A página quebrou, apareceu um stack trace, e a correção foi mudar o código para o erro parar de acontecer. Este curso trata do que acontece nesse momento, e de como assumir o controle…
Ler a aula completa grátis →Currículo
7 aulasraise e o objeto exception
Como o raise interrompe a execução e sobe pelas chamadas, e por que toda exceção é um objeto.
begin/rescue: capturando uma exception específica
begin e rescue para capturar uma classe específica, a ordem de várias cláusulas e o rescue no método inteiro.
rescue puro e a fronteira do StandardError
Por que um rescue sem classe captura StandardError e suas subclasses, mas deixa passar SignalException, SystemExit e outros irmãos.
else e ensure
Como o else roda só quando o bloco begin termina sem erro e o ensure roda em qualquer saída.
Classes de exception próprias
Como definir classes de exceção em uma linha, levantá-las com mensagens claras e agrupá-las sob uma classe pai.
Resgatando as exceções do Rails
Como resgatar pelo nome RecordNotFound, RecordInvalid, ParameterMissing e ForbiddenAttributesError, e os dados extras que algumas carregam.
Juntando tudo
Um método withdraw que junta exceções próprias, raise específicos e ensure, com uma revisão do limite do rescue sem classe.