Ex

Exceptions en Elixir

8 exercices

À propos de Exceptions

Le comportement Exception définit comment les errors sont levées et affichées.

Il inclut deux callbacks optionnels :

  • message/1 transforme le struct d'erreur en un message lisible.
  • exception/1 crée le message à partir du 2e argument de raise/2, ce qui permet de modifier le message.

Les erreurs définies :

  • Portent le nom du module dans lequel elles sont implémentées.
  • Sont une extension du type struct.
  • Ont un champ :message.
  • Peuvent être utilisées avec raise/1 et raise/2 pour lever l'erreur voulue

Définis une exception

Pour définir une exception à partir d'un module d'erreur, utilise la macro 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

Utilise les exceptions

Les erreurs définies peuvent être utilisées comme une erreur intégrée, avec raise/1 ou 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
Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet

Apprends Exceptions

L'entraînement est verrouillé

Déverrouille 2 exercices de plus pour t'entraîner sur Exceptions