Alternativa a la “excepción de rescate”

Recibo algunos errores inesperados en ocasiones como errores de tiempo de espera, 503 errores, etc. Hay errores que ni siquiera conozco que puedo recibir. No puedo dar cuenta de todos ellos haciendo algo como:

rescue Timeout::Error => e 

También es una idea terrible rescatar a Exception .

¿Cuál es una alternativa que podría usar? Quiero que mi código los rescate a todos cuando hay un error; Si no hay error, necesito evitarlo. Quiero poder matar mi script pero no saltarme los errores de syntax, etc.

Puedes rescatar para StandardError , o simplemente rescatar, que son los mismos:

 rescue StandardError => e # or rescue => e 

Puede ver en la siguiente tabla las excepciones que se rescatan de StandardError . Tenga en cuenta que son un subconjunto de Exception y que, posiblemente, deberían haber errores que puedan ser detectados.

Por supuesto, puedes tener gems que definen la excepción en el lugar equivocado, pero esto no debería suceder en gems bien desarrolladas.

ruby exceptions http://sofes.miximages.com/exception/exception.jpg

Personalmente, me gusta rescatar solo las excepciones que sé manejar, excepto cuando es para agregar un sistema de registro / retroceso para consultar los errores más adelante. Si este es el caso, normalmente rescato StandardError