اس

استثنا در Elixir

8 تمرین

درباره‌ی استثنا

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
ویرایش از طریق GitHub این پیوند در پنجره یا زبانه‌ی جدیدی باز می‌شود

استثنا را یاد بگیرید

تمرین کردن قفل شده است

برای تمرین استثنا قفل 2 تمرین دیگر را باز کنید