C++ Exception vs. Error Proxy
===

I've been part of the 'no-exception' camp, but not religiously so. I have a question about an argument frequently advanced by the proponents of using exceptions.

So my biggest (only) gripe with exceptions in C++ is the unpredictability of code. I want to be able to look at code (without any IDEs, in VIM) and see exactly what it does in all cases. With exceptions the logic flow is not obvious as the throw and catch can be many logical layers apart. 

The typical counter of pro-exception response is: "Yes, that sucks. But nested error codes suck more."

Well, yeah, but that's **not** the alternative.

Say you have a class called MyErrorProxy with a virtual handleMyXYZError(), and if you know your MyClass might get an XYZ error, and you want to handle it many logical layers away, you pass it a pointer to MyErrorProxy (which can be a mixin, an interface, or just a centralized error handling class)? You don't want to pass pointers? Fine, make it a thread-safe singleton. This requires more plumbing, but it is *explicit* and very easy to track logic flow.

That is how I've been coding for a long time.

Now my question is: what are the real drawbacks of doing this? Will you get angry if you see this code long after I'm gone and you're maintaining it? Would you really rather prefer try(s) and catch(es) instead of this mechanism and why?