Change the name of ArrayBoundsException in druntime

Denis Koroskin 2korden at gmail.com
Wed Oct 22 09:37:45 PDT 2008


On Wed, 22 Oct 2008 20:25:15 +0400, Andrei Alexandrescu  
<SeeWebsiteForEmail at erdani.org> wrote:

> Max Samukha wrote:
>> On Wed, 22 Oct 2008 10:06:24 -0500, Andrei Alexandrescu
>> <SeeWebsiteForEmail at erdani.org> wrote:
>>
>>> Jarrett Billingsley 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.
>>> I agree. In fact I wanted to ask you all the following question. What  
>>> do
>>> you think about the current exception hierarchy in phobos? I think it  
>>> is
>>> terrible. Each module in std you open, the first piece of code to be
>>> seen is the "class ThisModuleNameException" definition. In many (most?)
>>> cases the module-specific exception does absolutely nothing in addition
>>> to its base class. The putative reader (including me) tends to scroll  
>>> non-critically over that passage without even blinking, mumbling in a  
>>> trance - of course, yes, each module should define at least one  
>>> exception type.
>>>
>>> Until one day when you stop scrolling and say, wait a minute. This all  
>>> is repetition. And there are alternatives to catching by type - you  
>>> can catch the base type and consult a field. And in fact I don't  
>>> remember seeing code that depends on exceptions thrown from different  
>>> modules having different types. There's something wrong here!
>>>
>>> I think most exception classes in phobos should be yanked if it's  
>>> possible for their functionality (often nil) to be moved in the  
>>> Exception base class. The module name should be a member. If someone  
>>> needs to deal with an exception thrown from a specific module, they  
>>> can always inspect the field. We don't need a huge hierarchy for that.
>>>
>>>
>>> Andrei
>>  Good idea. What about exceptions thrown from templated code? I suppose
>> mixins and ordinary template instances  should be treated differently:
>>  modue a;
>>  template Foo()
>> {
>>     void Foo()
>>    {
>>       throw new Exception;
>>    }
>> }
>>  ----
>> module b;
>>  alias Foo!() foo; // Exception's module should probably be 'a'
>> mixin Foo; // Exception's module is 'b'?
>
> That's a good point. By the way, where is Don's code to get the name of
> the current module?
>
> Andrei
>

http://www.dsource.org/projects/meta/browser/trunk/meta/NameOf.d ?



More information about the Digitalmars-d mailing list