{-# LANGUAGE DeriveDataTypeable #-} -- | A collection of exceptions that can be raised in the pure algorithms in -- "Data.BTree.Primitives", "Data.BTree.Impure" and "Data.BTree.Pure". module Data.BTree.Primitives.Exception ( -- * Re-exports throw -- * Custom exceptions , TreeAlgorithmError(..) , KeyTooLargeError(..) ) where import Control.Exception (Exception, throw) import Data.Typeable (Typeable) -- | An exception raised when the pure modification algorithms are called using -- invalid state. -- -- This exception is only raised when a the library contains a bug. -- -- The first argument is a function name indicating the location of the error. -- The second argument is the description of the error. data TreeAlgorithmError = TreeAlgorithmError String String deriving (Typeable) instance Show TreeAlgorithmError where show (TreeAlgorithmError loc msg) = loc ++ ": " ++ msg ++ " (TreeAlgorithmError, this indicates a " ++ "bug in the haskey-btree library, please report)" instance Exception TreeAlgorithmError where -- | An exception thrown when the keys inserted in the database are larger than -- 'Data.BTree.Alloc.Class.maxKeySize'. -- -- Note that this exception can be thrown long after the key violating the -- maximum key size was inserted. It is only detected when the tree -- modification algorithms try to split the node containing that key. -- -- Increase the page size to fix this problem. data KeyTooLargeError = KeyTooLargeError deriving (Show, Typeable) instance Exception KeyTooLargeError where