{- |
Handling of exceptions.
-}
module Sound.MIDI.Parser.Exception where

import qualified Sound.MIDI.Parser.Report as Report
-- import qualified Sound.MIDI.Parser.Warning as Warning

import qualified Control.Monad.Exception.Synchronous as Sync


type T m = Sync.ExceptionalT Report.UserMessage m


run :: Monad m =>
   T m a -> m (Sync.Exceptional Report.UserMessage a)
run = Sync.runExceptionalT


giveUp :: Monad m => String -> T m a
giveUp = Sync.throwT

try :: Monad m => T m a -> m (Sync.Exceptional Report.UserMessage a)
try = Sync.tryT