Way of indicating an error

Damien Cassou damien.cassou at gmail.com
Mon Feb 26 16:23:11 UTC 2007


> I like how detect works.  If you don't pass a handler, raise an error
>
> ^#(John Doe) detect: [:each | each = 'Ramon'] => Error: Object is not in the
> collection
>
> If you want to handle the error, don't catch it, make another method that
> takes the handler as an arg so the api is cleaner, so the client doesn't
> have to catch it.
>
> ^#(John Doe) detect: [:each | each = 'Ramon'] ifNone:['']
>
> Then you can return nil via the handler if you like, or just handle the
> error some other way like returning an empty string, or don't pass a handler
> and let the exception propagate.

This is exactely what I was thinking about. But, this is not that easy
in my case because I'm working on reimplementing Streams.

Look at Stream>>next for example. It returns nil when there is no more
element. Should I keep this behavior ? Should I implement
Stream>>nextIfNoMore:.

Look at Stream>>next: now. This method returns a collection with the
following x elements (x given as a parameter). If there is not enough
element, the collection contains the last elements.

Would you think that a new Stream hierarchy should be more coherent
and clearer, or do you think it should keep compatibility ?


-- 
Damien Cassou



More information about the Squeak-dev mailing list