Me aprobaron un programa ruby heredado de larga duración, que tiene numerosas apariciones de
begin
#dosomething
rescue Exception => e
#halt the exception's progress
end
a lo largo de ella.
Sin rastrear todas y cada una de las posibles excepciones que cada uno podría manejar (al menos no de inmediato), aún me gustaría poder cerrarlo a veces con CtrlC.
Y me gustaría hacerlo de una manera que solo se agregue al código (para que no afecte el comportamiento existente o pierda una excepción detectada en medio de una ejecución).
[ CtrlCes SIGINT, o SystemSalir, que parece ser equivalente al SignalException.new("INT")
sistema de manejo de excepciones de Ruby. class SignalException < Exception
, por eso surge este problema.]
El código que me gustaría haber escrito sería:
begin
#dosomething
rescue SignalException => e
raise e
rescue Exception => e
#halt the exception's progress
end
EDITAR: Este código funciona, siempre que obtenga la clase de la excepción que desea capturar correctamente. Eso es SystemSalir, Interrupción o IRB :: Abort como se muestra a continuación.