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