Exceptionビヘイビアは、errorsがどのように発生して表示されるかを定義します。
次の2つの任意のコールバックが含まれます。
message/1は、エラー構造体を読みやすいメッセージに変換します。exception/1は、raise/2の2番目の引数からメッセージを作成し、メッセージを変更できるようにします。定義されたエラーは次のとおりです。
:messageフィールドを持ちます。raise/1とraise/2で使うことができます。エラーモジュールから例外を定義するには、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
定義したエラーは、組み込みのエラーと同じように、raise/1または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