Hoist non-excepting code out of exception regions where possible.

* This was an experimental fix for issue #1786.
* Now abandoning that experiment, but this shrinking is potentially
  interesting on its own merit. For now, committing this code for
  putting this in git history.
Revert "Hoist non-excepting code out of exception regions where possible."

* Reverting previous commit since this is unnecessary work and code
  for now. Can revive this later if found useful.

This reverts commit 6d4e2840df1aa633af59e0231a00cdcde146fc55.