mirror of
https://github.com/rjNemo/exercism-elixir
synced 2026-06-06 02:16:48 +00:00
22 lines
664 B
Elixir
22 lines
664 B
Elixir
defmodule RPNCalculator.Exception do
|
|
defmodule DivisionByZeroError do
|
|
defexception message: "division by zero occurred"
|
|
end
|
|
|
|
defmodule StackUnderflowError do
|
|
defexception message: "stack underflow occurred"
|
|
|
|
@impl true
|
|
def exception(context) do
|
|
case context do
|
|
[] -> %__MODULE__{}
|
|
_ -> %__MODULE__{message: "stack underflow occurred, context: #{context}"}
|
|
end
|
|
end
|
|
end
|
|
|
|
def divide([]), do: raise(StackUnderflowError, "when dividing")
|
|
def divide([_]), do: raise(StackUnderflowError, "when dividing")
|
|
def divide([0 | _]), do: raise(DivisionByZeroError)
|
|
def divide([denom, num]), do: div(num, denom)
|
|
end
|