Question: Exceptions in C++ don't need to be caught (no compile time errors) by the calling function. So it's up to developer's judgment whether to catch them using try/catch (unlike in Java).

Is there a way one can ensure that the exceptions thrown are always caught using try/catch by the calling function?

Answer: 
There was once an attempt to add [dynamic exception specifications](http://en.cppreference.com/w/cpp/language/except_spec) to a function's signature, but since the language could not enforce their accuracy, they were later depreciated. 

In C++11 and forward, we now have the [noexcept specifier](http://en.cppreference.com/w/cpp/language/noexcept_spec).  

Again, if the signature is marked to throw, there is still not requriement that it be handled by the caller. 

---

Depending on the context, you can ensure that exceptional behaviour be handled by coding it into the type system. 

**See:** [std::optional](http://en.cppreference.com/w/cpp/utility/optional) as part of the library fundamentals.
Or you could start throwing critical exceptions. Surely, an access violation exception will *catch* your users' attention.