Ruby reraising exception w / argument de chaîne supplémentaire

Voici la situation. Je veux toutes les exceptions dans doStuff() pour remonter à travers le code de sorte qu'ils sont gérés à un niveau supérieur.

J'aimerais aussi souvent que tout exceptions qui se produisent dans doStuff() à un niveau supérieur en tant que bien, et je suis actuellement en train de faire ceci:

begin
  doStuff()
rescue Exception =>
  raise e, "specific error to log in a db"

doStuff code de jeter des dizaines d'exceptions, et je veux capturer chacun de ces événements pour mettre dans la db. Il y a un doStuff2(), qui peut également jeter identiques instructions, et je veux savoir quelle fonction ils sont venus.

D'ajouter la chaîne, semble changer l'exception de lui-même, et je perds toute la belle mise en forme et les informations de trace que l'exception d'origine avait.

Des suggestions sur comment je peux relancer l'exception d'origine, mais aussi de garder une trace de toutes les exceptions qui se produisent au sein de doStuff()?

source d'informationauteur Crazy Dan 11 | 2011-08-30