The rules regarding exceptions and RTTI are being relaxed at many companies. Twenty years ago when the rules were being introduced everywhere it was because exception handlers had all kinds of negative properties. Compilers generated a little bit of code in every function call for stack tracking and unwinding, and RTTI required very large tables of data and were slow to process. Since several sub-components of both share the same technology, and since the cost was present even if exceptions were never called and dynamic casts never used, both were typically off by default. Skip to today, 2015, and compilers have advanced. There is a small table of data needed by the executable, but nowhere near as large as two decades ago. Exceptions no longer need every function call to include stack unwinding information, instead there is a lookup cost when they are used -- but games can be written in ways that never trigger c++ exceptions except through what are normally fatal bugs anyway.
Why aren't more console game developers using exceptions then? I'm aware that the "zero-cost" exception handling model increases the executable speed a bit and thrown exceptions are really slow, but surely that is better than locking up the console and forcing the user to reboot the entire system when an error condition occurs? From what I've seen, the typical error handling strategy is basically non-existent. Using asserts and trying to catch all the criticial bugs in debug builds is not an error handling strategy. C++ without exceptions is a broken language as far as I'm concerned.
They aren't used because they used to be bad. And since they didn't used to be used, large swaths of existing code isn't written to handle them. None of that code was written with exception safety in mind (heck, it's
still hard to get people to follow proper RAII practices).
Throw exceptions into the mix and you have a recipe for disaster as functions can start exiting in places the code didn't expect, leaking memory, and all sorts of other things. I would imagine that most of the "bugs" people chalk up to the compiler or "broken" exceptions are actually due to not coding in an exception-safe manner.
So until someone is willing to go through an entire code base and make sure exceptions can propagate cleanly - they will probably continue to be unused.
And no one is going to be willing to pay for a coder's time to do that - at least until someone takes their free time to remove all the "if (error-that-never-happens)" code and notices the speedup they get from removing lots of branches. (Or lack thereof)