mirror of https://github.com/python/cpython
What's New in Python 3.3: mention the PEP 3151
This commit is contained in:
parent
62ab10a05a
commit
a1bf298454
|
@ -109,6 +109,69 @@ XXX Add list of changes introduced by :pep:`393` here:
|
||||||
XXX mention new and deprecated functions and macros
|
XXX mention new and deprecated functions and macros
|
||||||
|
|
||||||
|
|
||||||
|
PEP 3151: Reworking the OS and IO exception hierarchy
|
||||||
|
=====================================================
|
||||||
|
|
||||||
|
:pep:`3151` - Reworking the OS and IO exception hierarchy
|
||||||
|
PEP written and implemented by Antoine Pitrou.
|
||||||
|
|
||||||
|
New subclasses of :exc:`OSError` exceptions:
|
||||||
|
|
||||||
|
* :exc:`BlockingIOError`
|
||||||
|
* :exc:`ChildProcessError`
|
||||||
|
* :exc:`ConnectionError`
|
||||||
|
|
||||||
|
* :exc:`BrokenPipeError`
|
||||||
|
* :exc:`ConnectionAbortedError`
|
||||||
|
* :exc:`ConnectionRefusedError`
|
||||||
|
* :exc:`ConnectionResetError`
|
||||||
|
|
||||||
|
* :exc:`FileExistsError`
|
||||||
|
* :exc:`FileNotFoundError`
|
||||||
|
* :exc:`InterruptedError`
|
||||||
|
* :exc:`IsADirectoryError`
|
||||||
|
* :exc:`NotADirectoryError`
|
||||||
|
* :exc:`PermissionError`
|
||||||
|
* :exc:`ProcessLookupError`
|
||||||
|
* :exc:`TimeoutError`
|
||||||
|
|
||||||
|
The following exceptions have been merged into :exc:`OSError`:
|
||||||
|
|
||||||
|
* :exc:`EnvironmentError`
|
||||||
|
* :exc:`IOError`
|
||||||
|
* :exc:`WindowsError`
|
||||||
|
* :exc:`VMSError`
|
||||||
|
* :exc:`socket.error`
|
||||||
|
* :exc:`select.error`
|
||||||
|
* :exc:`mmap.error`
|
||||||
|
|
||||||
|
Thanks to the new exceptions, common usages of the :mod:`errno` can now be
|
||||||
|
avoided. For example, the following code written for Python 3.2: ::
|
||||||
|
|
||||||
|
from errno import ENOENT, EACCES, EPERM
|
||||||
|
|
||||||
|
try:
|
||||||
|
with open("document.txt") as f:
|
||||||
|
content = f.read()
|
||||||
|
except IOError as err:
|
||||||
|
if err.errno == ENOENT:
|
||||||
|
print("document.txt file is missing")
|
||||||
|
elif err.errno in (EACCES, EPERM):
|
||||||
|
print("You are not allowed to read document.txt")
|
||||||
|
else:
|
||||||
|
raise
|
||||||
|
|
||||||
|
can now be written without the :mod:`errno` import: ::
|
||||||
|
|
||||||
|
try:
|
||||||
|
with open("document.txt") as f:
|
||||||
|
content = f.read()
|
||||||
|
except FileNotFoundError:
|
||||||
|
print("document.txt file is missing")
|
||||||
|
except PermissionError:
|
||||||
|
print("You are not allowed to read document.txt")
|
||||||
|
|
||||||
|
|
||||||
Other Language Changes
|
Other Language Changes
|
||||||
======================
|
======================
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue