Is "Out of Memory" a recoverable error?
Walter Bright
newshound1 at digitalmars.com
Tue Dec 2 07:47:36 PST 2008
Steven Schveighoffer wrote:
> 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.
I should point out that in such cases (probing a large allocation), the
error recovery is very local. I.e. there's no need for throwing an
exception and then recovering in some arbitrary user code way up the stack.
> 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.
I think this may be the best strategy.
More information about the Digitalmars-d
mailing list