There's a compiler pass (or was, not sure if its still around) for stripping try..catch blocks. This was to make debugging in Internet Explorer easier, since there was no first-chance exception handling. You'd use try...catches to handle errors in prod, then when debugging you'd strip them so you could get the debugger to stop at the right place.
@preserveTry was added to handle cases where exceptions are expected to occur and be caught as part of normal operation.