Skip to content

Commit 777a11d

Browse files
committed
Raise specific error for missing env
1 parent 3dd54ad commit 777a11d

File tree

2 files changed

+11
-4
lines changed

2 files changed

+11
-4
lines changed

lib/elixir/lib/system.ex

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,15 @@ defmodule System do
6262
in the Erlang docs.
6363
"""
6464

65+
defmodule EnvError do
66+
defexception [:env]
67+
68+
@impl true
69+
def message(%{env: env}) do
70+
"could not fetch environment variable #{inspect(env)} because it is not set"
71+
end
72+
end
73+
6574
@typedoc """
6675
The time unit to be passed to functions like `monotonic_time/1` and others.
6776
@@ -694,9 +703,7 @@ defmodule System do
694703
@doc since: "1.9.0"
695704
@spec fetch_env!(String.t()) :: String.t()
696705
def fetch_env!(varname) when is_binary(varname) do
697-
get_env(varname) ||
698-
raise ArgumentError,
699-
"could not fetch environment variable #{inspect(varname)} because it is not set"
706+
get_env(varname) || raise(EnvError, env: varname)
700707
end
701708

702709
@doc """

lib/elixir/test/elixir/system_test.exs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ defmodule SystemTest do
5656
assert System.fetch_env(@test_var) == :error
5757

5858
message = "could not fetch environment variable #{inspect(@test_var)} because it is not set"
59-
assert_raise ArgumentError, message, fn -> System.fetch_env!(@test_var) end
59+
assert_raise System.EnvError, message, fn -> System.fetch_env!(@test_var) end
6060

6161
System.put_env(@test_var, "SAMPLE")
6262

0 commit comments

Comments
 (0)