Hi all,
I was wondering on the best way to have a function that can return multiple errors. For example, I have something like this:
@spec run_some_work(atom(), Params.t()) ::
{:ok, Result.t()}
| {:error, :bad_params}
| {:error, :not_found}
| {:error, :no_workers}
| {:error, :worker_error}
The function can fail in different ways, and for each it has a different :error. in the @spec. I list them all so from the outside I can clearly see how to work with this function.
The problems that I’m having is that having functions with a big list of return types is cluttering my files, and that I have to update every spec if I add something new.
What’s your approach with functions that can give different errors? I was thinking about creating some sort of struct MyError, where the docs and specs would describe the possible errors it can contain, so in the function I would be just returning a single MyError struct.
Thanks in advance.






















