¿Por qué es malo rescatar excepciones en Ruby?
- El problema con el rescate de excepciones en Ruby
- Mejor enfoque para las excepciones en Ruby
- Situaciones en las que puede rescatar excepciones
- Conclusión
Las excepciones en Ruby son los errores que encuentran los programas cuando intentamos ejecutarlos. Algunas de estas excepciones hacen que nuestros programas se cuelguen, por lo que son muy útiles porque nos dicen cuáles son los problemas y de dónde provienen, luego sabemos qué tipo de soluciones podemos aplicar.
El problema con el rescate de excepciones en Ruby
Las excepciones son buenas porque sirven como indicadores de los problemas que tenemos con nuestros programas. Podríamos tener la tentación de rescatar excepciones dentro del código para detectar esa excepción en particular que hace que nuestro programa se bloquee, pero esto puede convertirse en un problema más que en una solución.
Cuando los programas se ejecutan en Ruby, el propio Ruby tiene excepciones dentro de estos programas, por lo que estas excepciones no hacen que nuestros programas se bloqueen. Entonces, rescatar excepciones en Ruby causará los siguientes problemas en nuestro código:
- Rescatar excepciones rescatará
Interrupción
y evitará que el usuario salga del problema con Ctrl+C. - También se rescatará
SignalException
, lo que hará que el programa no responda a las señales; tendremos que forzar el cierre de nuestro editor de código. - Cuando se rescata
SyntaxError
, las evaluaciones realizadas por el sistema Ruby se generarán solo en segundo plano. - Las excepciones de rescate generan
noMemoryError
, un error que se encuentra cuando Ruby no puede asignar memoria. Es un error innecesario que no necesita ser rescatado. - Dificulta la búsqueda de errores, ya que se generan todas las excepciones, y se vuelve difícil identificar la excepción real que causó que el programa se bloquee.
Para ver esto en acción, ejecutemos este código, creemos un nuevo archivo y asígnele el nombre nuevo.rb
:
nuevo.rb
:
loop do
begin
sleep 1
eval "djsakru3924r9eiuorwju3498 += 5u84fior8u8t4ruyf8ihiure"
rescue Exception
puts "I can't stop!"
end
end
Verá un bucle infinito de No puedo parar
, luego intente detener el programa usando Ctrl+C y simplemente continúa. La única opción es cerrar por completo el editor de código.
Mejor enfoque para las excepciones en Ruby
Ahora que hemos visto que rescatar excepciones puede provocar eventos catastróficos en nuestros programas, ¿cuál es la mejor manera de abordar las excepciones en Ruby?
- Podemos utilizar la función
asegurar
de Ruby en lugar de rescatar excepciones. Esto asegura que el código se ejecute incluso si se encuentran excepciones. - Rescate
StandardError
en su lugar, ya que las excepciones planteadas aquí son errores que afectan directamente a la aplicación.
Veamos el fragmento de código a continuación.
nuevo.rb
:
loop do
begin
sleep 1
eval "djsakru3924r9eiuorwju3498 += 5u84fior8u8t4ruyf8ihiure"
rescue => e
puts "I can't stop!"
end
end
Una vez que ejecutamos este código, obtenemos inmediatamente el error de sintaxis.
Situaciones en las que puede rescatar excepciones
Hay ocasiones en las que rescatar excepciones puede ser útil. En situaciones en las que queremos registrar las excepciones, podemos volver a generar la excepción; esto registrará la excepción para revisitas posteriores.
Si el usuario sabe cómo manejar las excepciones, es seguro rescatarlas.
Conclusión
Las excepciones, sin duda, son indicadores de los errores y fallas en nuestros programas; son útiles para saber qué corregir cuando se actualizan los programas; es solo una cuestión de cómo los maneja un usuario.
Fisayo is a tech expert and enthusiast who loves to solve problems, seek new challenges and aim to spread the knowledge of what she has learned across the globe.
LinkedIn