Chained exceptions are marvelous, until you find you need some information contained in the original exception, which was thrown out before you could get to it. Paolo Brandoli demonstrates an alternative way of handling this problem in his article "Unchaining Chained Exceptions in C++." His solution involves passing along the original exception with a catch and throw macro.