Dealing with ranges where front and popFront do the same logic / eager ranges
Dennis
dkorpel at gmail.com
Wed Oct 17 16:22:49 UTC 2018
On Wednesday, 17 October 2018 at 00:12:13 UTC, H. S. Teoh wrote:
> I'm not sure what's the reasoning behind the saying that
> throwing exceptions in ctors is bad, but exceptions are exactly
> the kind of thing designed for handling this sort of situation.
> If the parser detects a problem early (i.e., at construction
> time, rather than the first call to .front), why not report the
> problem early instead of waiting?
I think I must have confused constructors with destructors there.
Walter made this comment:
"Throwing in a destructor is a nightmare, it makes my brain hurt
just trying to figure out what 'should' happen. I've proposed
before that destructors should be nothrow."
https://issues.dlang.org/show_bug.cgi?id=14903
I couldn't find anything about nothrow constructors, so it might
be just fine.
Throwing exceptions to early is a problem when you do something
like this:
```
auto tokens = Lexer(source).handle!(ParseException,
RangePrimitive.front, (e, r) => Token.error);
```
https://dlang.org/phobos/std_exception.html#.handle
It's unexpected that the exception will be thrown one token in
advance.
Interesting solution for your problem with byLine by the way.
More information about the Digitalmars-d-learn
mailing list