Java has [compiler checked exceptions](http://en.wikipedia.org/wiki/Checked_exceptions#Checked_exceptions). When I made transition to C++, I learned it doesn't feature checked exceptions. At first, I kept using exception handling, because it's a great feature. However, after a while I abandoned it, because I got into a situation **every function might throw** an exception. As only a small percentage of the functions I write can throw exceptions (say some 25% at the most), I found the overhead of doing exception handling for functions that cannot throw anything unacceptable.

Because of this, I am really surprised that there are a lot of developers who prefer unchecked exceptions. Therefore, I am curious to know how they handle this problem. **How do you avoid the overhead of doing unnecessary exception handling** in case the language doesn't support checked exceptions?

**Remark:** My question equally applies to C++ and C#, and probably to all other languages that don't feature compiler checked exception handling.