-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | throwable-exceptions gives the easy way to throw exceptions
--   
--   throwable-exceptions gives the easy way to throw exceptions
@package throwable-exceptions
@version 0.1.0.9


-- | The data types creator of exceptions in the compile type.
--   
--   It has the record of "cause" and "clue".
module Control.Exception.Throwable.TH

-- | Declare simple concrete exception data type in the compile time.
--   
--   If the empty list is given to <tt>constrNames</tt>, create empty data
--   type.
--   
--   <tt>typeName</tt> and <tt>constrNames</tt> must be PascalCase (e.g&gt;
--   <a>IOException'</a>, <a>IndexOutOfBoundsException</a>. NG&gt;
--   "ioException'", "indexOutOfBoundsException") .
declareException :: DatatypeName -> [ValueConstructorName] -> DecsQ
type DatatypeName = String
type ValueConstructorName = String
instance GHC.Show.Show Control.Exception.Throwable.TH.DatatypeNames
instance GHC.Show.Show Control.Exception.Throwable.TH.ValueConstructor


-- | The mostly exceptions has the field for its cause, and its clue.
--   
--   The cause is the message.
--   
--   The clue is some stuff for find bugs, the clue can be omitted if you
--   don't need it. (e.g. <tt>ioException'</tt>,
--   <tt>illegalArgumentException</tt>)
module Control.Exception.Throwable

-- | An other of these exceptions
data GeneralException a
GeneralException :: String -> String -> a -> GeneralException a

-- | This should be named by <tt>PascalCase</tt> for show, for example:
--   <a>MyOperation</a>, <a>Database</a>
[exceptionName] :: GeneralException a -> String

-- | The message for the cause of the exception
[exceptionCause] :: GeneralException a -> String

-- | The clue of the exception. This can be anything of Show instance
[exceptionClue] :: GeneralException a -> a

-- | A constructor for GeneralException but doesn't take the clue
generalException :: String -> String -> GeneralException ()
data IOException' a_aa3H
IOException' :: String -> a_aa3H -> IOException' a_aa3H
[ioExceptionCause'] :: IOException' a_aa3H -> String
[ioExceptionClue'] :: IOException' a_aa3H -> a_aa3H
FileNotFoundException :: String -> a_aa3H -> IOException' a_aa3H
[fileNotFoundExceptionCause] :: IOException' a_aa3H -> String
[fileNotFoundExceptionClue] :: IOException' a_aa3H -> a_aa3H
ioException' :: String -> IOException' ()
data IllegalArgumentException a_aa8k
IllegalArgumentException :: String -> a_aa8k -> IllegalArgumentException a_aa8k
[illegalArgumentExceptionCause] :: IllegalArgumentException a_aa8k -> String
[illegalArgumentExceptionClue] :: IllegalArgumentException a_aa8k -> a_aa8k
illegalArgumentException :: String -> IllegalArgumentException ()
data IndexOutOfBoundsException a_aa6n
IndexOutOfBoundsException :: String -> a_aa6n -> IndexOutOfBoundsException a_aa6n
[indexOutOfBoundsExceptionCause] :: IndexOutOfBoundsException a_aa6n -> String
[indexOutOfBoundsExceptionClue] :: IndexOutOfBoundsException a_aa6n -> a_aa6n
indexOutOfBoundsException :: String -> IndexOutOfBoundsException ()
instance GHC.Show.Show a => GHC.Show.Show (Control.Exception.Throwable.IllegalArgumentException a)
instance (Data.Typeable.Internal.Typeable a, GHC.Show.Show a) => GHC.Exception.Exception (Control.Exception.Throwable.IllegalArgumentException a)
instance GHC.Show.Show a => GHC.Show.Show (Control.Exception.Throwable.IndexOutOfBoundsException a)
instance (Data.Typeable.Internal.Typeable a, GHC.Show.Show a) => GHC.Exception.Exception (Control.Exception.Throwable.IndexOutOfBoundsException a)
instance GHC.Show.Show a => GHC.Show.Show (Control.Exception.Throwable.IOException' a)
instance (Data.Typeable.Internal.Typeable a, GHC.Show.Show a) => GHC.Exception.Exception (Control.Exception.Throwable.IOException' a)
instance GHC.Show.Show a => GHC.Show.Show (Control.Exception.Throwable.GeneralException a)
instance (Data.Typeable.Internal.Typeable a, GHC.Show.Show a) => GHC.Exception.Exception (Control.Exception.Throwable.GeneralException a)
