January 2020
Intermediate to advanced
454 pages
11h 25m
English
In this recipe, we will learn why it is so important to mark a function as noexcept if it shouldn't throw an exception. This is because it removes the added overhead to the application for exception support, which can improve execution time, application size, and even load time (this depends on the compiler, which Standard Library you are using, and so on). To show this, let's create a simple example:
class myclass{ int answer;public: ~myclass() { answer = 42; }};
The first thing we need to do is create a class that sets a private member variable when it is destructed, as follows:
void foo(){ throw 42;}int main(void) { myclass c; try { foo(); } catch (...) { }}
Now, we can create two functions. The first function throws an ...