Error handling flow in Elixir
I’ve been playing around with Phoenix in the last couple weeks and it’s been great fun!:) Amidst my dwellings, I wanted to implement an API call to create a username and send a verification e-mail in one step.
This means that both must be successful in order to procceed. Let’s forget how to revert the user creation in case the e-mail fails for now. Now, how would we do that?
In Ruby we could do something like:
It’s pretty succint right? But that if
, unless
and return
in the middle of the method… Oh boy, it pisses me off. The get_error
also kinda itches me.
Elixir’s pattern matching allows us to make the code a bit more elegant. We can expose information throughout the code in a more ordered and straight forward fashion:
Pretty cool, heh? Code’s more readable, no flow breaks and no ifs laying around. The only requirement is to follow the {:ok, whatever}
and {:error, error_struct}
format.
That said, Elixir 1.2 brought us with! Here’s an updated take on this kind of issue!
Check my other Elixir posts here.