Is "Out of Memory" a recoverable error?

Steven Schveighoffer schveiguy at
Tue Dec 2 07:32:20 PST 2008

"Walter Bright" wrote
>I asked this over on to see what people using other 
>languages have to say, as well as the D community. The reason I ask is to 
>see if memory allocation can be allowed in functions marked "nothrow".

It can be.  For example, if you want to allocate a gigantic buffer to see if 
you can load a file, you may catch for failure, and display an appropriate 
message to the user on failure.  The application could still continue to 
run.  I think the difference between recoverable and non-recoverable is the 
size of the allocation.  If the size is sufficiently large enough, you can 
still have memory to deal with the failure.  If allocating 16 bytes gives 
you a failure, then may not be able to do much to get around it.

In most cases, an out of memory failure is a non-recoverable error.  My 
thoughts are, add a recoverable allocate function to the GC.  If one wants a 
recoverable memory error, he must call that function to allocate.  Don't 
allow that function in nothrow functions, but allow standard (non 
recoverable) memory allocation to be called.


More information about the Digitalmars-d mailing list