Re: Exception Names
Arne Vajh?j wrote:
Mike Schilling wrote:
Arne Vajh?j wrote:
Mike Schilling wrote:
Lew wrote:
rossum wrote:
On Fri, 27 Mar 2009 11:58:20 +0000, Tom Anderson
<twic@urchin.earth.li> wrote:
InputStream.read should throw an EOFException instead of
returning
-1 at the end of a stream. Checking return values for special
values is goofy C bullshit that we shouldn't be doing in the
21st
century.
It may bee goofy but it is very likely to be a whole lot
faster.
Throwing and catching an exception is probably going to be a
lot
slower than checking the return value.
Besides, there's nothing exceptional about reaching the end of a
stream. One would venture to say that one nearly always reaches
the
end of a stream, *unless* something exceptional happens.
Right; the most Java-ish thing would be for Streams to be
iterator-like:
while (stream.hasNext())
{
char c = stream.next();
}
or even
for (char c: stream)
{
}
1) performance would most likely not be good.
Because of two method calls rather than one?
Yes.
2) semantics could become very confusing - either hexNext
would do the actual read or for some types of streams next
could fail even ig hasNext returned true
The semantics would have to be well-defined.
Well-defined is required but not sufficient to make it good.
Since we're not
assuming
any asynchrony, I'd expect hasNext() to do actual I/O, if that's
necessary to ensure that a character is available.
I don't think that is intuitive.
It is to me (how do you know whether there's a next character if you
don't fetch it?), but perhaps that's because I've implemented a lot of
iterators where hasNext() had to do significant work.