[Python-checkins] cpython: What's New in Python 3.3: mention the PEP 3151

victor.stinner python-checkins at python.org
Wed Oct 12 20:34:18 CEST 2011


http://hg.python.org/cpython/rev/bff65cb4aa7c
changeset:   72895:bff65cb4aa7c
user:        Victor Stinner <victor.stinner at haypocalc.com>
date:        Wed Oct 12 20:35:02 2011 +0200
summary:
  What's New in Python 3.3: mention the PEP 3151

files:
  Doc/whatsnew/3.3.rst |  63 ++++++++++++++++++++++++++++++++
  1 files changed, 63 insertions(+), 0 deletions(-)


diff --git a/Doc/whatsnew/3.3.rst b/Doc/whatsnew/3.3.rst
--- a/Doc/whatsnew/3.3.rst
+++ b/Doc/whatsnew/3.3.rst
@@ -109,6 +109,69 @@
 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
 ======================
 

-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list