rio-prettyprint-0.1.3.0: Pretty-printing for RIO
Safe HaskellSafe-Inferred
LanguageHaskell2010

RIO.PrettyPrint.PrettyException

Description

This module provides a type representing pretty exceptions. It can be used as in the example below:



module Main (main) where

import RIO
         ( Exception, Handler (..), IO, RIO, Show, SomeException (..), Typeable
         , ($), catches, displayException, exitFailure, fromString, logError
         , mempty, throwIO
         )
import RIO.PrettyPrint
         ( Pretty (..), Style (..), (+), prettyError, prettyInfo, style )
import RIO.PrettyPrint.PrettyException ( PrettyException (..) )
import RIO.PrettyPrint.Simple ( SimplePrettyApp, runSimplePrettyApp )

main :: IO ()
main = runSimplePrettyApp 80 mempty (action catches handleExceptions)
 where
  action :: RIO SimplePrettyApp ()
  action = do
      prettyInfo "Running action!"
      throwIO (PrettyException MyPrettyException)

  handleExceptions :: [Handler (RIO SimplePrettyApp) ()]
  handleExceptions =
    [ Handler handlePrettyException
    , Handler handleSomeException
    ]

  handlePrettyException :: PrettyException -> RIO SimplePrettyApp ()
  handlePrettyException e = do
    prettyError $ pretty e
    exitFailure

  handleSomeException :: SomeException -> RIO SimplePrettyApp ()
  handleSomeException (SomeException e) = do
    logError $ fromString $ displayException e
    exitFailure

data MyPrettyException
  = MyPrettyException
  deriving (Show, Typeable)

instance Pretty MyPrettyException where
  pretty MyPrettyException =
    My + style Highlight "pretty" + "exception!"

instance Exception MyPrettyException
Synopsis

Documentation

data PrettyException Source #

Type representing pretty exceptions.

Since: 0.1.3.0

Constructors

forall e.(Exception e, Pretty e) => PrettyException e 

Instances

Instances details
Exception PrettyException Source # 
Instance details

Defined in RIO.PrettyPrint.PrettyException

Methods

toException :: PrettyException -> SomeException

fromException :: SomeException -> Maybe PrettyException

displayException :: PrettyException -> String

Show PrettyException Source # 
Instance details

Defined in RIO.PrettyPrint.PrettyException

Methods

showsPrec :: Int -> PrettyException -> ShowS

show :: PrettyException -> String

showList :: [PrettyException] -> ShowS

Pretty PrettyException Source # 
Instance details

Defined in RIO.PrettyPrint.PrettyException