-----------------------------------------------------------------------------
---
+-- |
-- Module : Control.Exception
-- Copyright : (c) The University of Glasgow 2001
-- License : BSD-style (see the file libraries/core/LICENSE)
-- Stability : experimental
-- Portability : non-portable
--
--- $Id: Exception.hs,v 1.2 2001/07/31 14:34:23 simonmar Exp $
+-- $Id: Exception.hs,v 1.7 2002/04/24 16:31:37 simonmar Exp $
--
-- The External API for exceptions. The functions provided in this
-- module allow catching of exceptions in the IO monad.
-- Throwing exceptions
throw, -- :: Exception -> a
-#ifndef __STGHUGS__
- -- for now
throwTo, -- :: ThreadId -> Exception -> a
-#endif
-- Dynamic exceptions
#ifdef __GLASGOW_HASKELL__
import Prelude hiding (catch)
-import GHC.Prim ( assert )
+import System.IO.Error
+import GHC.Base ( assert )
import GHC.Exception hiding (try, catch, bracket, bracket_)
import GHC.Conc ( throwTo, ThreadId )
import GHC.IOBase ( IO(..) )
asyncExceptions (AsyncException e) = Just e
asyncExceptions _ = Nothing
-userErrors (UserError e) = Just e
+userErrors e | isUserError e = Just (ioeGetErrorString e)
userErrors _ = Nothing
-----------------------------------------------------------------------------