The exception system, as designed, does not allow to re-raise an exception, as far as I can tell. This means that in case cleanup code is needed, the error message is lost. This is the best that can be done with the current code:
(catch (begin (do-some-cleanup) (throw "An error occurred but we don't know what"))
(do-some-processing))