Current section
Files
Jump to
Current section
Files
lib/plug_exception_handler.ex
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
Exception.format(:error, e) |> 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