Current section

Files

Jump to
new_relic_agent lib new_relic util error.ex
Raw

lib/new_relic/util/error.ex

defmodule NewRelic.Util.Error do
# Helper functions for normalizing and formatting errors
@moduledoc false
def normalize(exception, stacktrace, initial_call \\ nil) do
normalized_error = Exception.normalize(:error, exception, stacktrace)
exception_type = normalized_error.__struct__
exception_reason = format_reason(normalized_error)
exception_stacktrace = format_stacktrace(stacktrace, initial_call)
{exception_type, exception_reason, exception_stacktrace}
end
def format_reason(error),
do:
:error
|> Exception.format_banner(error)
|> String.replace("** ", "")
def format_stacktrace(stacktrace, initial_call),
do:
stacktrace
|> prepend_initial_call(initial_call)
|> Enum.map(&Exception.format_stacktrace_entry/1)
defp prepend_initial_call(stacktrace, {mod, fun, args}),
do: stacktrace ++ [{mod, fun, args, []}]
defp prepend_initial_call(stacktrace, _), do: stacktrace
end