Exception Behaviour 定義了errors如何被引發與顯示。
它包含兩個選用的回呼:
message/1 會將錯誤結構轉換成可讀的訊息。exception/1 會從 raise/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