Change the name of ArrayBoundsException in druntime

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Thu Oct 23 07:27:03 PDT 2008


Sergey Gromov wrote:
> Thu, 23 Oct 2008 08:43:04 -0500,
> Andrei Alexandrescu wrote:
>> Robert Fraser wrote:
>>> Option B:
>>> ---------
>>> try
>>> {
>>>     new Socket(30587);
>>> }
>>> catch(Exception e)
>>> {
>>>     if(e.type == ExceptionType.Socket)
>>>         printf("Could not open socket\n");
>>>     else
>>>         throw e;
>>> }
>> I think you'd be hard-pressed to justify the "if" inside the second 
>> example. You couldn't create a Socket, period. It doesn't matter where 
>> exactly the exception was generated from.
>>
>> That's one thing about large exception hierarchies: everybody can come 
>> with cute examples on how they could be useful. As soon as the rubber 
>> hits the road, however, differentiating exceptions by type becomes useless.
> 
> If you try every function separately, yes.  But I think that the line 
> between recoverable and non-recoverable exceptions is arbitrary and 
> depends on the situation.  It makes sense to try/catch a transaction, not 
> separate calls.  I can retry connection transaction if the socket open 
> fails, but the whole upper-level transaction should fail if there is a 
> database inconsistency or out of memory.

I agree, but there's no need for a million types to support that.

Andrei



More information about the Digitalmars-d mailing list