Change the name of ArrayBoundsException in druntime

KennyTM~ kennytm at gmail.com
Thu Oct 23 05:45:21 PDT 2008


Robert Fraser wrote:
> Sean Kelly wrote:
>> Denis Koroskin wrote:
>>> On Wed, 22 Oct 2008 16:22:02 +0400, Jarrett Billingsley 
>>> <jarrett.billingsley at gmail.com> wrote:
>>>
>>>> On Wed, Oct 22, 2008 at 6:49 AM, Jacob Carlborg <doobnet at gmail.com> 
>>>> wrote:
>>>>> I think the name ArrayBoundsException should be changed to a more 
>>>>> general
>>>>> name like BoundsException, OutOfBoundsException or
>>>>> IndexOutOfBoundsException. Then you can use the exception in every 
>>>>> class
>>>>> that have some sort of index operation and not just for an array/array
>>>>> class.
>>>>>
>>>>
>>>> 2nded.
>>>
>>> Agreed. BTW, why it is not an Error but Exception?
>>
>> The Error class was created shortly before release and I didn't get 
>> around to reclassifying the exceptions in druntime.  From memory 
>> though, I think that OutOfMemoryException and UtfException should 
>> remain as-is, but the remaining exceptions should probably be errors.  
>> Any objections?
>>
>> And as for ArrayBoundsException... how about IndexOutOfBoundsError. 
>> It's long, but probably the most self-explanatory.  Also, any value in 
>> retaining ArrayBoundsError and having it subclass this?  I'd think 
>> not, but figured I'd ask anyway.
>>
>>
>> Sean
> 
> Ah NOOOOO! Please don't make an out of memory catchable with a plain 
> catch(Exception) .... In most programs... pretty much every non-trivial 
> desktop application I can think of... an out-of memory state is 
> basically unrecoverable. In the few cases it would need to be, there 
> would need to be significant handling code, and that would have to be at 
> the right location in the program (i.e. when first opening a file), not 
> in the closest catch-all block some intern down the hallway may have 
> thrown in.
> 
> Out of memory is an Error subclass in Java and C#, so there's precedent 
> there. catch(Exception) shouldn't be used - but it is, quite often, so 
> things that would cause issues that a user could not normally be 
> expected to recover from should be Error subclasses.
> 
> Indexing I could see being an exception since that's deterministic and 
> the user's fault. So I guess I disagree on both counts ;-P. Although 
> since index errors don't appear in release modes in D, that gives more 
> case for it to be an Error.

Make OutOfMemoryException the own subclass of Throwable? Then we have

Throwable
   Exception
   Error
   OutOfMemoryException

or we maybe we can have (jokingly)

Throwable
   Exception    // Recoverable
   Error        // Should not be recoverable
   ChallengingException  // Recoverable but I won't touch it.
     OutOfMemoryException // Let programmer to force GC to release memory
     CPUOnFireException   // Let programmer to call local fire station 
through modem.
     // etc...




More information about the Digitalmars-d mailing list