Wording and markup changes.

This commit is contained in:
Antoine Pitrou 2010-07-21 17:44:30 +00:00
parent fd2895531b
commit e742aa991b
1 changed files with 21 additions and 19 deletions

View File

@ -87,10 +87,11 @@ primitive it chooses to use at runtime.
As for WindowsError, it seems to be a pointless distinction. First, it As for WindowsError, it seems to be a pointless distinction. First, it
only exists on Windows systems, which requires tedious compatibility code only exists on Windows systems, which requires tedious compatibility code
in cross-platform applications. Second, it inherits from OSError and in cross-platform applications (such code can be found in ``Lib/shutil.py``).
is raised for similar errors as OSError is raised for on other systems. Second, it inherits from OSError and is raised for similar errors as OSError
Third, the user wanting access to low-level exception specifics has to is raised for on other systems. Third, the user wanting access to low-level
examine the ``errno`` or ``winerror`` attribute anyway. exception specifics has to examine the ``errno`` or ``winerror`` attribute
anyway.
Lack of fine-grained exceptions Lack of fine-grained exceptions
@ -104,9 +105,9 @@ suffers from an obvious race condition::
if os.path.exists(filename): if os.path.exists(filename):
os.remove(filename) os.remove(filename)
If a file named as `filename` is created by another thread or process If a file named as ``filename`` is created by another thread or process
between the calls to `os.path.exists` and `os.remove`, it won't be deleted. between the calls to ``os.path.exists`` and ``os.remove``, it won't be
This can produce bugs in the application, or even security issues. deleted. This can produce bugs in the application, or even security issues.
Therefore, the solution is to try to remove the file, and ignore the error Therefore, the solution is to try to remove the file, and ignore the error
if the file doesn't exist (an idiom known as Easier to Ask Forgiveness if the file doesn't exist (an idiom known as Easier to Ask Forgiveness
@ -128,10 +129,10 @@ or even::
raise raise
This is a lot more to type, and also forces the user to remember the various This is a lot more to type, and also forces the user to remember the various
cryptic mnemonics from the errno module. It imposes an additional cognitive cryptic mnemonics from the ``errno`` module. It imposes an additional
burden and gets tiresome rather quickly. Consequently, many programmers cognitive burden and gets tiresome rather quickly. Consequently, many
will instead write the following code, which silences exceptions too programmers will instead write the following code, which silences exceptions
broadly:: too broadly::
try: try:
os.remove(filename) os.remove(filename)
@ -151,7 +152,7 @@ something such as::
pass pass
Compatibility concerns Compatibility strategy
====================== ======================
Reworking the exception hierarchy will obviously change the exact semantics Reworking the exception hierarchy will obviously change the exact semantics
@ -213,6 +214,8 @@ Deprecation of names
It is not yet decided whether the old names will be deprecated (then removed) It is not yet decided whether the old names will be deprecated (then removed)
or all alternative names will continue living in the root namespace. or all alternative names will continue living in the root namespace.
Deprecation of names from the root namespace presents some implementation
challenges, especially where performance is important.
Step 2: define additional subclasses Step 2: define additional subclasses
@ -575,7 +578,8 @@ Raises IOError when trying to open a directory under Unix::
File "<stdin>", line 1, in <module> File "<stdin>", line 1, in <module>
IOError: [Errno 21] Is a directory: 'Python/' IOError: [Errno 21] Is a directory: 'Python/'
Raises IOError for unsupported operations:: Raises IOError or io.UnsupportedOperation (which inherits from the former)
for unsupported operations::
>>> open("LICENSE").write("bar") >>> open("LICENSE").write("bar")
Traceback (most recent call last): Traceback (most recent call last):
@ -590,8 +594,6 @@ Raises IOError for unsupported operations::
File "<stdin>", line 1, in <module> File "<stdin>", line 1, in <module>
IOError: can't do nonzero cur-relative seeks IOError: can't do nonzero cur-relative seeks
(io.UnsupportedOperation inherits from IOError)
Raises either IOError or TypeError when the inferior I/O layer misbehaves Raises either IOError or TypeError when the inferior I/O layer misbehaves
(i.e. violates the API it is expected to implement). (i.e. violates the API it is expected to implement).
@ -653,10 +655,10 @@ Raises IOError in various file-handling functions::
select select
'''''' ''''''
select() and poll objects raise select.error, which doesn't inherit from * select() and poll objects raise select.error, which doesn't inherit from
anything (but poll.modify() which raises IOError). anything (but poll.modify() raises IOError);
epoll objects raise IOError. * epoll objects raise IOError;
kqueue objects raise both OSError and IOError. * kqueue objects raise both OSError and IOError.
signal signal
'''''' ''''''