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 :
:message.raise/1 et raise/2 pour lever l'erreur vouluePour 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
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