defmodule PlugExceptionHandler do @behaviour Plug.Wrapper import Logger, only: [error: 1] import Plug.Conn, only: [send_resp: 3] def init(opts \\ []), do: opts def wrap(conn, _opts, stack) do try do stack.(conn) rescue e -> status = Plug.Exception.status(e) send_exception(conn, status, e) end end def send_exception(conn, 500, e) do e |> Exception.message |> error send_resp(conn, 500, "Internal Server Error") end def send_exception(conn, status, e) do send_resp(conn, status, Exception.message(e)) end end