DIP33: A standard exception hierarchy

Lars T. Kyllingstad public at kyllingen.net
Wed Apr 3 02:40:26 PDT 2013


On Wednesday, 3 April 2013 at 08:37:32 UTC, deadalnix wrote:
> On Tuesday, 2 April 2013 at 20:11:31 UTC, Lars T. Kyllingstad 
> wrote:
>> No.  To call front on an empty range is a programming error, 
>> plain and simple.  It's like trying to access the first 
>> element of an empty array.  The fact that some ranges may 
>> allow it anyway does not change anything.
>>
>
> It is illegal for a reason. For instance, with an array, it is 
> an out of bound access. I see ne benefice to hide this 
> information in a more generic RangeError. This is hiding 
> information and providing nothing more.

For arrays, RangeError is synonymous with "out of bounds".  I see 
no reason to invent a new class just for this purpose.

And note that I'm not saying that ranges should be restricted to 
*only* throwing RangeErrors.  Generally, it should be used in 
situations that are analogous to out of bounds for arrays, such 
as trying to pop past the end of the range.

However, some ranges may want to do something else in this 
situation.  An output range that writes to a file, for instance, 
may want to throw a "disk full" exception.  A wrapper range may 
simply propagate any errors from the underlying range.

RangeError is for the cases when it is not possible/necessary to 
provide more detail than "you tried to call popFront on an empty 
range, which is illegal".

Lars


More information about the Digitalmars-d mailing list