On Friday 13 November 2015 00:28:46 Igor Mironchik wrote: > On 13.11.2015 00:15, Matthew Woehlke wrote: > > On 2015-11-12 15:56, Igor Mironchik wrote: > >> Can you, please, explain why allocating memory when throwing exception > >> is bad practice? Or just can you give a link on any article about this > >> question.... Thank you. > > > > What if the exception occurred because you are out of memory? > > Then will be std::bad_alloc instead of my custom exception. Am I right? > > Then if I will catch std::bad_alloc somewhere and correctly will do > cleanup and stop, for example, then there will not be problems. Right?
Not necessarily. It's possible that the OOM situation got reported as a different error, like failure to open a file (fopen will return NULL on all error conditions). And even if you clean up, there's no guarantee that you now have enough memory to allocate to throw your exception. In fact, there's no guarantee at any point that you'll have enough memory during exception throwing. If you get a std::bad_alloc during throw, your application terminates instead of reporting the error. So don't allocate memory in response to failures. -- Thiago Macieira - thiago.macieira (AT) intel.com Software Architect - Intel Open Source Technology Center _______________________________________________ Interest mailing list Interest@qt-project.org http://lists.qt-project.org/mailman/listinfo/interest