On 12/11/05, Fredrik Lundh <[EMAIL PROTECTED]> wrote:
> João Paulo Silva wrote:
>
> > >>> a = file("dir/foo")
> > >>> a.close()
> > >>> a.read()
> >
> > Traceback (most recent call last):
> >   File "<pyshell#28>", line 1, in -toplevel-
> >     a.read()
> > ValueError: I/O operation on closed file
> >
> > Shoudn't this raise IOError? Seems more semantically correct to me.
>
> IOError is, as the documentation says, used "when an I/O operation fails
> for an I/O related reason", while ValueError is used "when an argument has
> the right type but an inappropriate value."

What /F says.

IOError is something you could reasonably catch, log, and ignore
(since I/O devices are known to be fallible). The ValueError (at least
in this case) means there's a logic bug in your program -- you're
trying to use a file that you've already closed. Very important
distinction!

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

Reply via email to