This module defines an effect, actions and handlers for working with JavaScript exceptions.


data Error

The type of JavaScript errors



error :: String -> Error

Create a JavaScript error, specifying a message


message :: Error -> String

Get the error message from a JavaScript error


name :: Error -> String

Get the error name when defined, or fallback to 'Error'


stack :: Error -> Maybe String

Get the stack trace from a JavaScript error


throwException :: forall a. Error -> Effect a

Throw an exception

For example:

main = do
  x <- readNumber
  when (x < 0) $ throwException $
    error "Expected a non-negative number"


catchException :: forall a. (Error -> Effect a) -> Effect a -> Effect a

Catch an exception by providing an exception handler.

For example:

main = catchException Console.logShow do
  Console.log "Exceptions thrown in this block will be logged to the console"


throw :: forall a. String -> Effect a

A shortcut allowing you to throw an error in one step. Defined as throwException <<< error.


try :: forall a. Effect a -> Effect (Either Error a)

Runs an Eff and returns eventual Exceptions as a Left value. If the computation succeeds the result gets wrapped in a Right.

For example:

main :: Effect Unit
main = do
  result <- try (readTextFile UTF8 "")
  case result of
    Right lines ->
      Console.log ("README: \n" <> lines )
    Left error ->
      Console.error ("Couldn't open Error was: " <> show error)