On Dec 19, 12:14 pm, "Bo Persson" <b...@gmb.dk> wrote:
Another thing to consider is that if "new" or "MyClass" throws
because of lack of resources, what are the odds that wxMessageBox
will work at that point? Isn't that trying to create a window
telling you that creating a window just failed?!
Some of the objects I create are quite complicated in their
construction. For instance, if I create a thread object for sniffing a
network interface, it could fail for all sorts of reasons... lack of
memory, inability to open the network interface. If creation of the
object fails, I want to handle it gracefully without killing my
program.
Here's what I've resorted to doing:
#define NEW_NULL_FAIL(p,x) \
do \
{ \
try \
{ \
p = new(std::nothrow) x; \
} \
catch (...) \
{ \
p = 0; \
} \
} while (0)
So now my code is something like:
Thread *p;
NEW_NULL_FAIL(p, Thread(entry_func,JOINABLE));
if (!p)
{
wxMessageBox(...
return;
}
ContinueOn();
wxMessageBox(...