اذهب إلى المحتوى

السؤال

نشر

أتعلم حاليا لغة روبي وكل يوم أكتشف طريقة جديدة في البرمجة باستخدامها، حيث وجدت اليوم كلمة برمجية جديدة  fail كما تظهر في المثال التالي:

if password.length < 8
   fail "Password too short"
end
unless  username
   fail "No user name set"
end

فما وظيفتها؟

Recommended Posts

  • 0
نشر

في لغة روبي، إن كلمة fail مرادفة لكلمة raise، فهي تابع لوحدة Kernel والتي يتم تضمينها من قبل الصنف.

تابع fail يُصدر خطأ من نوع "خطأ عند وقت التشغيل" (RuntimeError) كما تقوم كلمة raise، ويملك بعض الخصائص التي تميزه عن raise مثل التالية:

  • إن تابع fail يُصدر خطأ من نوع "خطأ عند وقت التشغيل" بدون رسالة خطأ.
  • أما fail(string) فتصدر خطأ من نوع "خطأ عند وقت التشغيل" مع رسالة الخطأ التي تم تمريرها كمعامل إلى fail.

المصدر

  • 0
نشر

في حال استدعاء التابع fail بدون تمرير أي معامل، فسيُطلق الاستثناء في ‎$!‎‎‎‎ أو يطلق الخطأ RuntimeError إذا كان ‎$!‎ يساوي nil. في حال تمرير سلسلة نصية فقط، فسيُطلَق الخطأ RuntimeError مع إظهار هذه السلسلة النصية كرسالة. خلا ذلك، يجب أن يكون الوسيط الأول اسم الصنف Exception (أو كائنًا يعيد كائنًا من النوع Exception عند إرسال رسالة استثناء). يحدِّد الوسيط الاختياري الثاني الرسالة المرتبطة بالاستثناء، أما الوسيط الثالث فهو مصفوفة تضم معلومات الاستدعاء. تُلتقَط الاستثناءات بواسطة الجملة rescue من الكتل begin...end.
البنية العامة له:

fail
fail(string)
fail(exception [, string [, array]])‎

string‎: سلسلة نصية تمثل الرسالة المراد إظهارها عند الفشل.
exception‎: اسم الصنف Exception أو كائن يعيد كائنًا من الصنف Exception.
array‎: مصفوفة تضم معلومات الاستدعاء.
مثال على استخدام التابع fail‎:

raise "Failed to create socket"
raise ArgumentError, "No parameters", caller

 

يمكنك القول أن fail == raise. بمعنى آخر، fail هو مجرد اسم آخر (alias) شائع للدالة raise.

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...