Exceptions are deviations from the rule.
I beg to differ. Exceptions are exactly that, exceptions. The reason 'exception handlers' aren't called 'error trappers' is because they don't just trap errors. If one does not like global variables, dynamically scoped or not, one can transform them into parameters to all procedures that access them. But then for all their awfulness global variables, and even dynamically scoped global variables, are useful, in the sense they are merely convenient, for the xxx-reduction involves a bit more verbiage.