Exceptions happen. We should trap them and handle them.
It's the throw keyword that is an abomination and should never be used. When throw was introduced to C++ a lot of formerly stable software started crashing all the time.
I've written about this before.
https://medium.com/p/the-throw-keyword-was-a-mistake-4fd1e8462b28