Don't Use Exceptions, No Exceptions
In practice, especially in C++ code, exceptions make code overall really difficult to follow, especially library code. They also make refactoring exceptionally difficult and bug prone. Even so, it is extremely difficult to convey to a user-programmer that exceptions may be thrown in particular circumstances, what that means and why that's the case, and what type(s) can and should be handled.
The absolute worst thing about them is that they risk leaving objects and data in bad states, typically because you or another developer forgot to account for something.
It's overall better to avoid this evil feature in its entirety. Just code pragmatically using minimalist approaches.