(original) (raw)
{-# LANGUAGE ExistentialQuantification #-} {-# LANGUAGE NoImplicitPrelude #-} {-# LANGUAGE Trustworthy #-}
{-# OPTIONS_HADDOCK not-home #-}
module GHC.Exception.Type
( Exception(..)
, SomeException(..), ArithException(..)
, divZeroException, overflowException, ratioZeroDenomException
, underflowException
) where
import Data.Maybe import Data.Typeable (Typeable, cast)
import GHC.Base import GHC.Show
data SomeException = forall e . Exception e => SomeException e
instance Show SomeException where showsPrec :: Int -> SomeException -> ShowS showsPrec Int p (SomeException e e) = Int -> e -> ShowS forall a. Show a => Int -> a -> ShowS showsPrec Int p e e
class (Typeable e, Show e) => Exception e where toException :: e -> SomeException fromException :: SomeException -> Maybe e
[toException](GHC.Exception.Type.html#toException) = e -> SomeExceptionforall e. Exception e => e -> SomeException SomeException fromException (SomeException e e) = e -> Maybe e forall a b. (Typeable a, Typeable b) => a -> Maybe b cast e e
[displayException](GHC.Exception.Type.html#displayException) :: [e](#local-6989586621679609626) -> [String](GHC.Base.html#String)
[displayException](GHC.Exception.Type.html#displayException) = e -> Stringforall a. Show a => a -> String show
instance Exception SomeException where toException :: SomeException -> SomeException toException SomeException se = SomeException se fromException :: SomeException -> Maybe SomeException fromException = SomeException -> Maybe SomeException forall a. a -> Maybe a Just displayException :: SomeException -> String displayException (SomeException e e) = e -> String forall e. Exception e => e -> String displayException e e
data ArithException
= Overflow
| Underflow
| LossOfPrecision
| DivideByZero
| Denormal
| RatioZeroDenominator
deriving ( ArithException -> ArithException -> Bool
(ArithException -> ArithException -> Bool)
-> (ArithException -> ArithException -> Bool) -> Eq ArithException
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ArithException -> ArithException -> Bool
$c/= :: ArithException -> ArithException -> Bool
== :: ArithException -> ArithException -> Bool
$c== :: ArithException -> ArithException -> Bool
Eq
, Eq ArithException
Eq ArithException
-> (ArithException -> ArithException -> Ordering)
-> (ArithException -> ArithException -> Bool)
-> (ArithException -> ArithException -> Bool)
-> (ArithException -> ArithException -> Bool)
-> (ArithException -> ArithException -> Bool)
-> (ArithException -> ArithException -> ArithException)
-> (ArithException -> ArithException -> ArithException)
-> Ord ArithException
ArithException -> ArithException -> Bool
ArithException -> ArithException -> Ordering
ArithException -> ArithException -> ArithException
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: ArithException -> ArithException -> ArithException
$cmin :: ArithException -> ArithException -> ArithException
max :: ArithException -> ArithException -> ArithException
$cmax :: ArithException -> ArithException -> ArithException
= :: ArithException -> ArithException -> Bool $c>= :: ArithException -> ArithException -> Bool :: ArithException -> ArithException -> Bool $c> :: ArithException -> ArithException -> Bool <= :: ArithException -> ArithException -> Bool $c<= :: ArithException -> ArithException -> Bool < :: ArithException -> ArithException -> Bool $c< :: ArithException -> ArithException -> Bool compare :: ArithException -> ArithException -> Ordering $ccompare :: ArithException -> ArithException -> Ordering Ord )
divZeroException, overflowException, ratioZeroDenomException, underflowException :: SomeException divZeroException :: SomeException divZeroException = ArithException -> SomeException forall e. Exception e => e -> SomeException toException ArithException DivideByZero overflowException :: SomeException overflowException = ArithException -> SomeException forall e. Exception e => e -> SomeException toException ArithException Overflow ratioZeroDenomException :: SomeException ratioZeroDenomException = ArithException -> SomeException forall e. Exception e => e -> SomeException toException ArithException RatioZeroDenominator underflowException :: SomeException underflowException = ArithException -> SomeException forall e. Exception e => e -> SomeException toException ArithException Underflow
instance Exception ArithException
instance Show ArithException where showsPrec :: Int -> ArithException -> ShowS showsPrec Int _ ArithException Overflow = String -> ShowS showString String "arithmetic overflow" showsPrec Int _ ArithException Underflow = String -> ShowS showString String "arithmetic underflow" showsPrec Int _ ArithException LossOfPrecision = String -> ShowS showString String "loss of precision" showsPrec Int _ ArithException DivideByZero = String -> ShowS showString String "divide by zero" showsPrec Int _ ArithException Denormal = String -> ShowS showString String "denormal" showsPrec Int _ ArithException RatioZeroDenominator = String -> ShowS showString String "Ratio has zero denominator"