Conditions are a special case of dynamic scope, and the few conditions we have in std that make sense, like not_utf8 could simply be represented as a dynamic variable that represents the standard schemes for coping with unicode errors: failure, deletion, replacement char.
Nominating.