I don't agree with this line of reasoning. It should be a ValueError
when passing a nonblocking raw I/O object to BufferedIO, but that's
not detectable (at least not without an unpleasant amount of
platform-specific code), and it isn't sufficient either, since the
file could be blocking initially and made non-blocking later.

I/O primitives produce IOError for *anything* I/O-related. *Something*
in the app has made the file nonblocking where it shouldn't. It's no
different from trying to read from a low-level file descriptor that's
open for writing only -- that will raise IOError too, and there's
nothing we can do about it, so you better accept it than trying to
fight it.

--Guido

On 3/7/07, Greg Ewing <[EMAIL PROTECTED]> wrote:
> Daniel Stutzbach wrote:
> > An IOError makes it more clear
> > that something went awry, while a ValueError typically implies that
> > the operation was rejected altogether.
>
> In the code I typically write, the IOError will get
> reported to the user, who won't know why it happened
> or what to do about it, and the application will
> abort that operation and go on to do something else.
>
> The ValueError will cause the application to abort
> altogether and produce a traceback, which is as it
> should be, since there's a bug.
>
> In either case, it doesn't really matter whether
> something was written or not, as the whole operation
> is screwed anyway.
>
> --
> Greg
> _______________________________________________
> Python-3000 mailing list
> Python-3000@python.org
> http://mail.python.org/mailman/listinfo/python-3000
> Unsubscribe: 
> http://mail.python.org/mailman/options/python-3000/guido%40python.org
>


-- 
--Guido van Rossum (home page: http://www.python.org/~guido/)
_______________________________________________
Python-3000 mailing list
Python-3000@python.org
http://mail.python.org/mailman/listinfo/python-3000
Unsubscribe: 
http://mail.python.org/mailman/options/python-3000/archive%40mail-archive.com

Reply via email to