Just like
readEnvEx, but also throw an exception when the
environment variable cannot be
read.
This can throw both
EnvVarCannotBeReadException and
EnvVarDoesNotExistException with
throwM.
Read an environment variable that exists:
>>> setEnv "TEST_ENV_VAR" "2000"
>>> readEnvEx' "TEST_ENV_VAR" :: IO Int
2000
Try reading an environment variable that does not exist. Throws
EnvVarDoesNotExistException:
>>> readEnvEx' "THIS_ENV_VAR_WILL_NOT_EXIST" :: IO Int
*** Exception: EnvVarDoesNotExistException "THIS_ENV_VAR_WILL_NOT_EXIST"
Try reading an environment variable that cannot be
read. Throws
EnvVarCannotBeReadException:
>>> setEnv "BAD_ENV_VAR" "not an int"
>>> readEnvEx' "BAD_ENV_VAR" :: IO Int
*** Exception: EnvVarCannotBeReadException "BAD_ENV_VAR"
Note that this
DOES NOT read string values as one might expect:
>>> setEnv "TEST_ENV_VAR2" "some string 1"
>>> readEnvEx' "TEST_ENV_VAR2" :: IO String
*** Exception: EnvVarCannotBeReadException "TEST_ENV_VAR2"
It will read string values as if they were Haskell strings:
>>> setEnv "TEST_ENV_VAR3" "\"some string 1\""
>>> readEnvEx' "TEST_ENV_VAR3" :: IO String
"some string 1"