The All About Monads in the Haskell Wiki says
class Error a where
noMsg :: a
strMsg :: String -> a
class (Monad m) => MonadError e m | m -> e where
throwError :: e -> m a
catchError :: m a -> (e -> m a) -> m a
Trying to understand this, my question is: is “e” an exception type and presupposes that exceptions are built in to the language?