| Copyright | Bas van Dijk Anders Kaseorg |
|---|---|
| License | BSD-style |
| Maintainer | Bas van Dijk <v.dijk.bas@gmail.com> |
| Stability | experimental |
| Portability | non-portable (extended exceptions) |
| Safe Haskell | Safe |
| Language | Haskell98 |
Control.Exception.Lifted
Description
This is a wrapped version of Control.Exception with types generalized
from IO to all monads in either MonadBase or MonadBaseControl.
Synopsis
- interruptible :: IO a -> IO a
- class (Typeable e, Show e) => Exception e where
- toException :: e -> SomeException
- fromException :: SomeException -> Maybe e
- displayException :: e -> String
- backtraceDesired :: e -> Bool
- data SomeException = (Exception e, HasExceptionContext) => SomeException e
- assert :: Bool -> a -> a
- mapException :: (Exception e1, Exception e2) => (e1 -> e2) -> a -> a
- throw :: forall a e. (HasCallStack, Exception e) => e -> a
- addExceptionContext :: ExceptionAnnotation a => a -> SomeException -> SomeException
- someExceptionContext :: SomeException -> ExceptionContext
- annotateIO :: ExceptionAnnotation e => e -> IO a -> IO a
- asyncExceptionFromException :: Exception e => SomeException -> Maybe e
- asyncExceptionToException :: Exception e => e -> SomeException
- data NestedAtomically = NestedAtomically
- newtype NoMethodError = NoMethodError String
- data NonTermination = NonTermination
- newtype PatternMatchFail = PatternMatchFail String
- newtype RecConError = RecConError String
- newtype RecSelError = RecSelError String
- newtype RecUpdError = RecUpdError String
- newtype TypeError = TypeError String
- data ErrorCall where
- ErrorCallWithLocation String String
- pattern ErrorCall :: String -> ErrorCall
- data ArithException
- data ExceptionWithContext a = ExceptionWithContext ExceptionContext a
- data MaskingState
- data AllocationLimitExceeded = AllocationLimitExceeded
- data ArrayException
- = IndexOutOfBounds String
- | UndefinedElement String
- newtype AssertionFailed = AssertionFailed String
- data AsyncException
- data BlockedIndefinitelyOnMVar = BlockedIndefinitelyOnMVar
- data BlockedIndefinitelyOnSTM = BlockedIndefinitelyOnSTM
- newtype CompactionFailed = CompactionFailed String
- data Deadlock = Deadlock
- data IOException
- data SomeAsyncException = Exception e => SomeAsyncException e
- throwIO :: (MonadBase IO m, Exception e) => e -> m a
- ioError :: MonadBase IO m => IOError -> m a
- throwTo :: (MonadBase IO m, Exception e) => ThreadId -> e -> m ()
- catch :: (MonadBaseControl IO m, Exception e) => m a -> (e -> m a) -> m a
- catches :: MonadBaseControl IO m => m a -> [Handler m a] -> m a
- data Handler (m :: Type -> Type) a = Exception e => Handler (e -> m a)
- catchJust :: (MonadBaseControl IO m, Exception e) => (e -> Maybe b) -> m a -> (b -> m a) -> m a
- handle :: (MonadBaseControl IO m, Exception e) => (e -> m a) -> m a -> m a
- handleJust :: (MonadBaseControl IO m, Exception e) => (e -> Maybe b) -> (b -> m a) -> m a -> m a
- try :: (MonadBaseControl IO m, Exception e) => m a -> m (Either e a)
- tryJust :: (MonadBaseControl IO m, Exception e) => (e -> Maybe b) -> m a -> m (Either b a)
- evaluate :: MonadBase IO m => a -> m a
- mask :: MonadBaseControl IO m => ((forall a. m a -> m a) -> m b) -> m b
- mask_ :: MonadBaseControl IO m => m a -> m a
- uninterruptibleMask :: MonadBaseControl IO m => ((forall a. m a -> m a) -> m b) -> m b
- uninterruptibleMask_ :: MonadBaseControl IO m => m a -> m a
- getMaskingState :: MonadBase IO m => m MaskingState
- allowInterrupt :: MonadBase IO m => m ()
- bracket :: MonadBaseControl IO m => m a -> (a -> m b) -> (a -> m c) -> m c
- bracket_ :: MonadBaseControl IO m => m a -> m b -> m c -> m c
- bracketOnError :: MonadBaseControl IO m => m a -> (a -> m b) -> (a -> m c) -> m c
- finally :: MonadBaseControl IO m => m a -> m b -> m a
- onException :: MonadBaseControl IO m => m a -> m b -> m a
Documentation
interruptible :: IO a -> IO a #
class (Typeable e, Show e) => Exception e where #
Minimal complete definition
Nothing
Methods
toException :: e -> SomeException #
fromException :: SomeException -> Maybe e #
displayException :: e -> String #
backtraceDesired :: e -> Bool #
Instances
data SomeException #
Constructors
| (Exception e, HasExceptionContext) => SomeException e |
Instances
| Exception SomeException | |
Defined in GHC.Internal.Exception.Type Methods toException :: SomeException -> SomeException # fromException :: SomeException -> Maybe SomeException # displayException :: SomeException -> String # backtraceDesired :: SomeException -> Bool # | |
| Show SomeException | |
Defined in GHC.Internal.Exception.Type Methods showsPrec :: Int -> SomeException -> ShowS show :: SomeException -> String showList :: [SomeException] -> ShowS | |
mapException :: (Exception e1, Exception e2) => (e1 -> e2) -> a -> a #
addExceptionContext :: ExceptionAnnotation a => a -> SomeException -> SomeException #
someExceptionContext :: SomeException -> ExceptionContext #
annotateIO :: ExceptionAnnotation e => e -> IO a -> IO a #
asyncExceptionFromException :: Exception e => SomeException -> Maybe e #
asyncExceptionToException :: Exception e => e -> SomeException #
data NestedAtomically #
Constructors
| NestedAtomically |
Instances
| Exception NestedAtomically | |
Defined in GHC.Internal.Control.Exception.Base Methods toException :: NestedAtomically -> SomeException # fromException :: SomeException -> Maybe NestedAtomically # displayException :: NestedAtomically -> String # backtraceDesired :: NestedAtomically -> Bool # | |
| Show NestedAtomically | |
Defined in GHC.Internal.Control.Exception.Base Methods showsPrec :: Int -> NestedAtomically -> ShowS show :: NestedAtomically -> String showList :: [NestedAtomically] -> ShowS | |
newtype NoMethodError #
Constructors
| NoMethodError String |
Instances
| Exception NoMethodError | |
Defined in GHC.Internal.Control.Exception.Base Methods toException :: NoMethodError -> SomeException # fromException :: SomeException -> Maybe NoMethodError # displayException :: NoMethodError -> String # backtraceDesired :: NoMethodError -> Bool # | |
| Show NoMethodError | |
Defined in GHC.Internal.Control.Exception.Base Methods showsPrec :: Int -> NoMethodError -> ShowS show :: NoMethodError -> String showList :: [NoMethodError] -> ShowS | |
data NonTermination #
Constructors
| NonTermination |
Instances
| Exception NonTermination | |
Defined in GHC.Internal.Control.Exception.Base Methods toException :: NonTermination -> SomeException # fromException :: SomeException -> Maybe NonTermination # displayException :: NonTermination -> String # backtraceDesired :: NonTermination -> Bool # | |
| Show NonTermination | |
Defined in GHC.Internal.Control.Exception.Base Methods showsPrec :: Int -> NonTermination -> ShowS show :: NonTermination -> String showList :: [NonTermination] -> ShowS | |
newtype PatternMatchFail #
Constructors
| PatternMatchFail String |
Instances
| Exception PatternMatchFail | |
Defined in GHC.Internal.Control.Exception.Base Methods toException :: PatternMatchFail -> SomeException # fromException :: SomeException -> Maybe PatternMatchFail # displayException :: PatternMatchFail -> String # backtraceDesired :: PatternMatchFail -> Bool # | |
| Show PatternMatchFail | |
Defined in GHC.Internal.Control.Exception.Base Methods showsPrec :: Int -> PatternMatchFail -> ShowS show :: PatternMatchFail -> String showList :: [PatternMatchFail] -> ShowS | |
newtype RecConError #
Constructors
| RecConError String |
Instances
| Exception RecConError | |
Defined in GHC.Internal.Control.Exception.Base Methods toException :: RecConError -> SomeException # fromException :: SomeException -> Maybe RecConError # displayException :: RecConError -> String # backtraceDesired :: RecConError -> Bool # | |
| Show RecConError | |
Defined in GHC.Internal.Control.Exception.Base Methods showsPrec :: Int -> RecConError -> ShowS show :: RecConError -> String showList :: [RecConError] -> ShowS | |
newtype RecSelError #
Constructors
| RecSelError String |
Instances
| Exception RecSelError | |
Defined in GHC.Internal.Control.Exception.Base Methods toException :: RecSelError -> SomeException # fromException :: SomeException -> Maybe RecSelError # displayException :: RecSelError -> String # backtraceDesired :: RecSelError -> Bool # | |
| Show RecSelError | |
Defined in GHC.Internal.Control.Exception.Base Methods showsPrec :: Int -> RecSelError -> ShowS show :: RecSelError -> String showList :: [RecSelError] -> ShowS | |
newtype RecUpdError #
Constructors
| RecUpdError String |
Instances
| Exception RecUpdError | |
Defined in GHC.Internal.Control.Exception.Base Methods toException :: RecUpdError -> SomeException # fromException :: SomeException -> Maybe RecUpdError # displayException :: RecUpdError -> String # backtraceDesired :: RecUpdError -> Bool # | |
| Show RecUpdError | |
Defined in GHC.Internal.Control.Exception.Base Methods showsPrec :: Int -> RecUpdError -> ShowS show :: RecUpdError -> String showList :: [RecUpdError] -> ShowS | |
Constructors
| TypeError String |
Instances
| Exception TypeError | |
Defined in GHC.Internal.Control.Exception.Base Methods toException :: TypeError -> SomeException # fromException :: SomeException -> Maybe TypeError # displayException :: TypeError -> String # backtraceDesired :: TypeError -> Bool # | |
| Show TypeError | |
Constructors
| ErrorCallWithLocation String String |
Instances
| Exception ErrorCall | |
Defined in GHC.Internal.Exception Methods toException :: ErrorCall -> SomeException # fromException :: SomeException -> Maybe ErrorCall # displayException :: ErrorCall -> String # backtraceDesired :: ErrorCall -> Bool # | |
| Show ErrorCall | |
| Eq ErrorCall | |
| Ord ErrorCall | |
Defined in GHC.Internal.Exception | |
data ArithException #
Instances
data ExceptionWithContext a #
Constructors
| ExceptionWithContext ExceptionContext a |
Instances
| Exception a => Exception (ExceptionWithContext a) | |
Defined in GHC.Internal.Exception.Type Methods toException :: ExceptionWithContext a -> SomeException # fromException :: SomeException -> Maybe (ExceptionWithContext a) # displayException :: ExceptionWithContext a -> String # backtraceDesired :: ExceptionWithContext a -> Bool # | |
| Show a => Show (ExceptionWithContext a) | |
Defined in GHC.Internal.Exception.Type Methods showsPrec :: Int -> ExceptionWithContext a -> ShowS show :: ExceptionWithContext a -> String showList :: [ExceptionWithContext a] -> ShowS | |
data MaskingState #
Constructors
| Unmasked | |
| MaskedInterruptible | |
| MaskedUninterruptible |
Instances
| Show MaskingState | |
Defined in GHC.Internal.IO Methods showsPrec :: Int -> MaskingState -> ShowS show :: MaskingState -> String showList :: [MaskingState] -> ShowS | |
| Eq MaskingState | |
Defined in GHC.Internal.IO | |
data AllocationLimitExceeded #
Constructors
| AllocationLimitExceeded |
Instances
| Exception AllocationLimitExceeded | |
Defined in GHC.Internal.IO.Exception Methods toException :: AllocationLimitExceeded -> SomeException # fromException :: SomeException -> Maybe AllocationLimitExceeded # displayException :: AllocationLimitExceeded -> String # backtraceDesired :: AllocationLimitExceeded -> Bool # | |
| Show AllocationLimitExceeded | |
Defined in GHC.Internal.IO.Exception Methods showsPrec :: Int -> AllocationLimitExceeded -> ShowS show :: AllocationLimitExceeded -> String showList :: [AllocationLimitExceeded] -> ShowS | |
data ArrayException #
Constructors
| IndexOutOfBounds String | |
| UndefinedElement String |
Instances
newtype AssertionFailed #
Constructors
| AssertionFailed String |
Instances
| Exception AssertionFailed | |
Defined in GHC.Internal.IO.Exception Methods toException :: AssertionFailed -> SomeException # fromException :: SomeException -> Maybe AssertionFailed # displayException :: AssertionFailed -> String # backtraceDesired :: AssertionFailed -> Bool # | |
| Show AssertionFailed | |
Defined in GHC.Internal.IO.Exception Methods showsPrec :: Int -> AssertionFailed -> ShowS show :: AssertionFailed -> String showList :: [AssertionFailed] -> ShowS | |
data AsyncException #
Constructors
| StackOverflow | |
| HeapOverflow | |
| ThreadKilled | |
| UserInterrupt |
Instances
data BlockedIndefinitelyOnMVar #
Constructors
| BlockedIndefinitelyOnMVar |
Instances
| Exception BlockedIndefinitelyOnMVar | |
Defined in GHC.Internal.IO.Exception Methods toException :: BlockedIndefinitelyOnMVar -> SomeException # fromException :: SomeException -> Maybe BlockedIndefinitelyOnMVar # displayException :: BlockedIndefinitelyOnMVar -> String # backtraceDesired :: BlockedIndefinitelyOnMVar -> Bool # | |
| Show BlockedIndefinitelyOnMVar | |
Defined in GHC.Internal.IO.Exception Methods showsPrec :: Int -> BlockedIndefinitelyOnMVar -> ShowS show :: BlockedIndefinitelyOnMVar -> String showList :: [BlockedIndefinitelyOnMVar] -> ShowS | |
data BlockedIndefinitelyOnSTM #
Constructors
| BlockedIndefinitelyOnSTM |
Instances
| Exception BlockedIndefinitelyOnSTM | |
Defined in GHC.Internal.IO.Exception Methods toException :: BlockedIndefinitelyOnSTM -> SomeException # fromException :: SomeException -> Maybe BlockedIndefinitelyOnSTM # displayException :: BlockedIndefinitelyOnSTM -> String # backtraceDesired :: BlockedIndefinitelyOnSTM -> Bool # | |
| Show BlockedIndefinitelyOnSTM | |
Defined in GHC.Internal.IO.Exception Methods showsPrec :: Int -> BlockedIndefinitelyOnSTM -> ShowS show :: BlockedIndefinitelyOnSTM -> String showList :: [BlockedIndefinitelyOnSTM] -> ShowS | |
newtype CompactionFailed #
Constructors
| CompactionFailed String |
Instances
| Exception CompactionFailed | |
Defined in GHC.Internal.IO.Exception Methods toException :: CompactionFailed -> SomeException # fromException :: SomeException -> Maybe CompactionFailed # displayException :: CompactionFailed -> String # backtraceDesired :: CompactionFailed -> Bool # | |
| Show CompactionFailed | |
Defined in GHC.Internal.IO.Exception Methods showsPrec :: Int -> CompactionFailed -> ShowS show :: CompactionFailed -> String showList :: [CompactionFailed] -> ShowS | |
Constructors
| Deadlock |
Instances
| Exception Deadlock | |
Defined in GHC.Internal.IO.Exception Methods toException :: Deadlock -> SomeException # fromException :: SomeException -> Maybe Deadlock # displayException :: Deadlock -> String # backtraceDesired :: Deadlock -> Bool # | |
| Show Deadlock | |
data IOException #
Instances
| Exception IOException | |
Defined in GHC.Internal.IO.Exception Methods toException :: IOException -> SomeException # fromException :: SomeException -> Maybe IOException # displayException :: IOException -> String # backtraceDesired :: IOException -> Bool # | |
| Show IOException | |
Defined in GHC.Internal.IO.Exception Methods showsPrec :: Int -> IOException -> ShowS show :: IOException -> String showList :: [IOException] -> ShowS | |
| Eq IOException | |
Defined in GHC.Internal.IO.Exception | |
data SomeAsyncException #
Constructors
| Exception e => SomeAsyncException e |
Instances
| Exception SomeAsyncException | |
Defined in GHC.Internal.IO.Exception Methods toException :: SomeAsyncException -> SomeException # fromException :: SomeException -> Maybe SomeAsyncException # displayException :: SomeAsyncException -> String # backtraceDesired :: SomeAsyncException -> Bool # | |
| Show SomeAsyncException | |
Defined in GHC.Internal.IO.Exception Methods showsPrec :: Int -> SomeAsyncException -> ShowS show :: SomeAsyncException -> String showList :: [SomeAsyncException] -> ShowS | |
Throwing exceptions
throwTo :: (MonadBase IO m, Exception e) => ThreadId -> e -> m () Source #
Generalized version of throwTo.
Catching exceptions
The catch functions
Arguments
| :: (MonadBaseControl IO m, Exception e) | |
| => m a | The computation to run |
| -> (e -> m a) | Handler to invoke if an exception is raised |
| -> m a |
Generalized version of catch.
Note, when the given computation throws an exception any monadic
side effects in m will be discarded.
catches :: MonadBaseControl IO m => m a -> [Handler m a] -> m a Source #
Generalized version of catches.
Note, when the given computation throws an exception any monadic
side effects in m will be discarded.
Arguments
| :: (MonadBaseControl IO m, Exception e) | |
| => (e -> Maybe b) | Predicate to select exceptions |
| -> m a | Computation to run |
| -> (b -> m a) | Handler |
| -> m a |
Generalized version of catchJust.
Note, when the given computation throws an exception any monadic
side effects in m will be discarded.
The handle functions
handle :: (MonadBaseControl IO m, Exception e) => (e -> m a) -> m a -> m a Source #
Generalized version of handle.
Note, when the given computation throws an exception any monadic
side effects in m will be discarded.
handleJust :: (MonadBaseControl IO m, Exception e) => (e -> Maybe b) -> (b -> m a) -> m a -> m a Source #
Generalized version of handleJust.
Note, when the given computation throws an exception any monadic
side effects in m will be discarded.
The try functions
try :: (MonadBaseControl IO m, Exception e) => m a -> m (Either e a) Source #
Generalized version of try.
Note, when the given computation throws an exception any monadic
side effects in m will be discarded.
tryJust :: (MonadBaseControl IO m, Exception e) => (e -> Maybe b) -> m a -> m (Either b a) Source #
Generalized version of tryJust.
Note, when the given computation throws an exception any monadic
side effects in m will be discarded.
The evaluate function
Asynchronous Exceptions
Asynchronous exception control
The following functions allow a thread to control delivery of asynchronous exceptions during a critical region.
mask :: MonadBaseControl IO m => ((forall a. m a -> m a) -> m b) -> m b Source #
Generalized version of mask.
uninterruptibleMask :: MonadBaseControl IO m => ((forall a. m a -> m a) -> m b) -> m b Source #
Generalized version of uninterruptibleMask.
uninterruptibleMask_ :: MonadBaseControl IO m => m a -> m a Source #
Generalized version of uninterruptibleMask_.
getMaskingState :: MonadBase IO m => m MaskingState Source #
Generalized version of getMaskingState.
allowInterrupt :: MonadBase IO m => m () Source #
Generalized version of allowInterrupt.
Brackets
Arguments
| :: MonadBaseControl IO m | |
| => m a | computation to run first ("acquire resource") |
| -> (a -> m b) | computation to run last ("release resource") |
| -> (a -> m c) | computation to run in-between |
| -> m c |
Generalized version of bracket.
Note:
- When the "acquire" or "release" computations throw exceptions
any monadic side effects in
mwill be discarded. - When the "in-between" computation throws an exception any
monadic side effects in
mproduced by that computation will be discarded but the side effects of the "acquire" or "release" computations will be retained. - Also, any monadic side effects in
mof the "release" computation will be discarded; it is run only for its side effects inIO.
Note that when your acquire and release computations are of type IO
it will be more efficient to write:
liftBaseOp(bracketacquire release)
Arguments
| :: MonadBaseControl IO m | |
| => m a | computation to run first ("acquire resource") |
| -> m b | computation to run last ("release resource") |
| -> m c | computation to run in-between |
| -> m c |
Generalized version of bracket_.
Note any monadic side effects in m of both the "acquire" and
"release" computations will be discarded. To keep the monadic
side effects of the "acquire" computation, use bracket with
constant functions instead.
Note that when your acquire and release computations are of type IO
it will be more efficient to write:
liftBaseOp_(bracket_acquire release)
Arguments
| :: MonadBaseControl IO m | |
| => m a | computation to run first ("acquire resource") |
| -> (a -> m b) | computation to run last ("release resource") |
| -> (a -> m c) | computation to run in-between |
| -> m c |
Generalized version of bracketOnError.
Note:
- When the "acquire" or "release" computations throw exceptions
any monadic side effects in
mwill be discarded. - When the "in-between" computation throws an exception any
monadic side effects in
mproduced by that computation will be discarded but the side effects of the "acquire" computation will be retained. - Also, any monadic side effects in
mof the "release" computation will be discarded; it is run only for its side effects inIO.
Note that when your acquire and release computations are of
type IO it will be more efficient to write:
liftBaseOp(bracketOnErroracquire release)
Utilities
Arguments
| :: MonadBaseControl IO m | |
| => m a | computation to run first |
| -> m b | computation to run afterward (even if an exception was raised) |
| -> m a |
Generalized version of finally.
Note, any monadic side effects in m of the "afterward"
computation will be discarded.
onException :: MonadBaseControl IO m => m a -> m b -> m a Source #
Generalized version of onException.
Note, any monadic side effects in m of the "afterward"
computation will be discarded.