In Elixier Sie eine benutzerdefinierte Ausnahme wie folgt definieren:Benutzerdefinierte Ausnahmen und Typ-Spezifikationen
defmodule AppWeb.CustomError do
defexception message: "some custom server error", plug_status: 500
end
Aber dies ist kein Elixir.Exception
mehr
Also, wenn Sie es mit einem Dritten Bibliothek, die dies hat verwenden Art von Typ-Spezifikation definiert:
@spec capture_exception(Exception.t, Keyword.t) :: task
def capture_exception(exception, opts \\ []) do
...
Sentry.capture_exception(AppWeb.CustomError,
[stacktrace: System.stacktrace()]
die dialyzer
mit breaks the contract
abstürzt, weil die Custom keine Ausnahme:
Der Aufruf 'Elixir.Sentry': capture_exception ('Elixir.AppWeb.CustomError' [{ 'stacktrace' [{Atom() Atom(), [any()] | Byte(), [{'Datei', Zeichenfolge()} | {'line', pos_integer()}}}}, ...]) bricht den Vertrag ('Elixir.Exception': t(), 'Elixir.Keyword': t()) -> task()
Können Sie das Modul Elixir.Exception
innerhalb von AppWeb.CustomError
erweitern? oder wie kann dies nach den besten Praktiken erfolgen?
Funktioniert 'Sentry.capture_exception (% AppWeb.CustomError {}, ...)? – Dogbert