Change the name of ArrayBoundsException in druntime
Robert Fraser
fraserofthenight at gmail.com
Sat Oct 25 15:45:51 PDT 2008
Jesse Phillips wrote:
> On Fri, 24 Oct 2008 16:04:53 -0700, Robert Fraser wrote:
>
>> Bill Baxter wrote:
>>> On Fri, Oct 24, 2008 at 10:42 AM, Robert Fraser
>>> <fraserofthenight at gmail.com> wrote:
>>>> Sean Kelly wrote:
>>>>> Perhaps I'm simply getting old... when did memory use become
>>>>> irrelevant?
>>>>> I grant that making an application exception safe is more difficult
>>>>> if out
>>>>> of memory conditions are considered recoverable, but I don't think
>>>>> it's tremendously more difficult.
>>>> I'm currently studying Computer Engineering at university. I don't
>>>> think a single programming course I've taken has _mentioned_ running
>>>> out of memory (next quarter I'm taking Operating Systems, so hopefully
>>>> that will). One class mentioned memory complexity as a side issue, but
>>>> never got into it. Even at work, I've never been asked to think about
>>>> it.
>>> People do still develop for embedded devices with small memory and/or
>>> no virtual memory.
>>> I'm pretty sure it's still a serious concern if you live in that world.
>>>
>>> --bb
>> I'm not saying it doesn't come up in practice; I'm saying developers are
>> trained not to think about it in most cases. And programming to handle a
>> small amount of memory is a different problem than programming to
>> gracefully fail when the program runs out of memory (for example, my
>> program might only use 10k of RAM... but if that 10k isn't there, it
>> might just crash with an error message).
>>
>> The problem with an OutOfMemoryError being treated as an Exception is
>> that if there are many catch(Exception) blocks, an out-of-memory error
>> will propagate logic bugs across the program (since no one is cleaning
>> up the memory, most allocations will fail). So instead of a nice, clean
>> error, the suer will experience weird and frustrating behavior that
>> doesn't mention memory at all.
>
> The problem with it being an error is that the programmer has no way to
> catch and remain usable,
Sure there is:
catch(OutOfMemoryError)
Just like in Java or .Net. The only difference is that it's not caught
by a general catch(Exception)
> leaving the user blissfully unaware he needs to
> buy more ram. If there are many catch(Exception)'s around, the programmer
> needs to rethink what he is doing when creating a stable program.
Probably. But when you have a team of 300 programmers, this is a bit
harder to do, and catch(Exception) _is_ a powerful tool for generalized
recoverable error handling.
> D doesn't force a try or throw of exceptions for this very reason; people
> usually use the catch(Exception) because they don't know what needs to be
> caught and don't care but are forced to catch it, not because their
> program is crashing from an exception (well, that is what I do).
People also use it to say to the user "this didn't work; try something
else"? In 99% of cases, this is fine, but when memory is involved, the
programmer has a whole lot more to think about and would often want to
catch the memory exception at a higher level.
More information about the Digitalmars-d
mailing list