Tracks
/
Elixir
Elixir
/
Lehrplan
/
Ausnahmen
Au

Ausnahmen in Elixir

8 Übungen

Über Ausnahmen

Das Exception Behaviour definiert, wie errors ausgelöst und angezeigt werden.

Es enthält zwei optionale Callbacks:

  • message/1 wandelt das Fehler-Struct in eine lesbare Nachricht um.
  • exception/1 erzeugt die Nachricht aus dem zweiten Argument von raise/2, wodurch die Nachricht angepasst werden kann.

Definierte Fehler:

  • haben denselben Namen wie das Modul, in dem sie implementiert sind.
  • sind eine Erweiterung des Struct-Typs.
  • haben ein Feld :message.
  • können mit raise/1 und raise/2 verwendet werden, um den beabsichtigten Fehler auszulösen

Eine Ausnahme definieren

Um eine Ausnahme aus einem Fehlermodul zu definieren, verwendest du das Makro defexception:

# Defines a minimal error, with the name `MyError`
defmodule MyError do
  defexception message: "error"
end

# Defines an error with a customized exception/1 function
defmodule MyCustomizedError do
  defexception message: "custom error"

  @impl true
  def exception(value) do
    case value do
      [] ->
        %MyCustomizedError{}

      _ ->
        %MyCustomizedError{message: "Alert: " <> value}
    end
  end
end

Ausnahmen verwenden

Definierte Fehler können wie ein eingebauter Fehler verwendet werden, und zwar mit raise/1 oder raise/2:

raise MyError
# => ** (MyError) error

raise MyError, "an error occurred"
# => ** (MyError) an error occurred

raise MyCustomizedError
# => ** (MyCustomizedError) "custom error"

raise MyCustomizedError, "a very bad error occurred"
# => ** (MyCustomizedError) Alert: a very bad error occurred
Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab

Lerne Ausnahmen

Das Üben ist gesperrt

Schalte 2 weitere Übungen frei, um Ausnahmen zu üben