it you throw toThrow, then you are starting a new stack trace. What you want to do is to re-throw, which is just throw; with no arg.

but if toThrow is null then you eat exception? Can you explain this logic?