Executando verificação de segurança...
9

Criaturas excepcionais em Ruby

Nunca programei em Ruby, mas encontrei um site chamado Exceptional Creatures, que é um tipo de documentação sobre o sistema de exceções do Ruby. O site é dividido em duas partes:

  • Guias: explica o sistema de exceções do Ruby.
  • Bestiário: catálogo de exceções, onde cada uma é um tipo de criatura com características específicas da exceção.

O site é um tipo de anúncio para a plataforma Honeybadger, que escreveu a documentação, mas resolvi compartilhar porque o estilo e a forma de ensinar me lembrou o Refactoring Guru, numa escala menor.

Guias

Existem quatro guias disponíveis:

Esses guias servem como tutoriais e estão bem escritos, usando uma linguagem bem informal. Me parece que os guias são bons até para quem não conhece o conceito de exceções. Ao longo de cada guia existem as explicações e exemplos envolvendo código, então acaba sendo algo bem prático

Bestiário

Apesar dos guias serem bem feitos, o que chama atenção nesse site é o bestiário. A equipe que desenvolveu essa documentação desenhou uma "criatura" para cada tipo de exceção do Ruby que seria abordada ali, sendo 12 exceções no total:

As seis primeiras exceções, ordenadas por ataque: NoMethodError com 34.5 de ataque, TypeError com 17.2, ArgumentError com 7.2, RuntimeError com 6.7, SignalException com 6.3 e NameError com 5.4

As seis primeiras exceções, ordenadas por ataque: Timeout:Error com 2.4 de ataque, SyntaxError com 1.8, Net::OpenTimeout com 1.7, Net::ReadTimeout com 1.7, ocketError com 1.5 e EOFError com 1.4

As exceções estão listadas no bestiário ordenadas pelo "ataque". O site diz que "o ataque é calculado usando dados do Honeybadger.io", mas não encontrei mais informações sobre isso. Imagino que as exceções "mais fortes" sejam as mais comuns.

Dentro de cada exceção, você pode ver detalhes como quando ela ocorre, um exemplo de código que faz a exceção ocorrer, qual é a superclasse e outras informações específicas da exceção, seguido de um texto mais longo, semelhante aos guias, explicando como a exceção funciona, como tratar (se fizer sentido) etc.

Criatura "NoMethodError"

As características físicas de uma criatura estão relacionadas ao tipo de exceção que ela representa, o que facilita a lembrar detalhes da exceção conforme vocẽ lembra da criatura. A criatura NoMethodError, por exemplo, está com uma mão na cabeça como se estivesse tentando lembrar de algo, o que remete ao subtítulo da documentação dela: It left that method somewhere, but it's not quite sure where...


Exceção foi um dos assuntos que pareceram mais complicados quando fiz faculdade, e como eu disse, esse guia me lembrou o Refactoring Guru, que também tratava outro assunto complicado da faculdade (code smells) e me ajudou bastante nos estudos, então imagino que esse bestiário também possa ajudar quem está começando e quer entender exceções, seja para trabalhar com Ruby ou um primeiro contato com o assunto.

2
2
1