المسارات
/
Elixir
Elixir
/
المنهج
/
الاستثناءات
ال

الاستثناءات في Elixir

8 تمارين

نبذة عن الاستثناءات

يحدّد سلوك الاستثناء كيفية رفع 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 يفتح الرابط في نافذة أو علامة تبويب جديدة

تعلّم الاستثناءات

التدريب مقفل

افتح تمرينين إضافيين لممارسة الاستثناءات