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