Add displayException method to Exception (#9822)
authorMichael Snoyman <michael@snoyman.com>
Fri, 21 Nov 2014 22:26:09 +0000 (23:26 +0100)
committerHerbert Valerio Riedel <hvr@gnu.org>
Fri, 21 Nov 2014 22:31:23 +0000 (23:31 +0100)
Defaults to using `show` to prevent any breakage of existing code.  Also
provide a custom implementation for `SomeException` which uses the
underlying exception's `displayException`.

Differential Revision: https://phabricator.haskell.org/D517

libraries/base/GHC/Exception.hs
libraries/base/changelog.md

index 7a7c8c2..e2b7149 100644 (file)
@@ -140,9 +140,18 @@ class (Typeable e, Show e) => Exception e where
     toException = SomeException
     fromException (SomeException e) = cast e
 
+    -- | Render this exception value in a human-friendly manner.
+    --
+    -- Default implementation: @'show'@.
+    --
+    -- /Since: 4.8.0.0/
+    displayException :: e -> String
+    displayException = show
+
 instance Exception SomeException where
     toException se = se
     fromException = Just
+    displayException (SomeException e) = displayException e
 
 -- | Throw an exception.  Exceptions may be thrown from purely
 -- functional code, but may only be caught within the 'IO' monad.
index 3e110a7..a5ae8ea 100644 (file)
 
   * Add `fillBytes` to `Foreign.Marshal.Utils`.
 
+  * Add new `displayException` method to `Exception` typeclass. (#9822)
+
 ## 4.7.0.1  *Jul 2014*
 
   * Bundled with GHC 7.8.3