A kivételviselkedés határozza meg, hogyan váltódnak ki és jelennek meg a errors.
Két opcionális visszahívást tartalmaz:
message/1 a hiba-structot olvasható üzenetté alakítja.exception/1 a raise/2 második argumentumából hozza létre az üzenetet, így az üzenet módosítható.A definiált hibák:
:message mezőjük.raise/1 és a raise/2 függvénnyel használhatók a szándékolt hiba kiváltásáraHa egy hibamodulból kivételt szeretnél definiálni, használd a defexception makrót:
# 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
A definiált hibák ugyanúgy használhatók, mint egy beépített hiba, akár a raise/1, akár a raise/2 függvénnyel:
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