الاستثناءات: رفع دالة (F#)

raiseدالة هو للإشارة إلى أن الخطأ أو الشرط الاستثنائية حدث. معلومات حول الخطأ هو التي تم التقاطها في كائن استثناء.

raise (expression)

ملاحظات

raiseدالة بإنشاء كائن استثناء ويبدأ مكدس عملية unwinding. المكدس unwinding عملية هو يديرها وقت تشغيل اللغة العامة (CLR)، لذا سلوك th هو عملية هو نفسها كما هو بأي لغة.NET الأخرى. المكدس unwinding عملية هو بحث لمعالج استثناء الذي يتطابق مع ‏‏ استثناء الذي تم إنشاؤه. يبدأ بحث في الحالي try...withالتعبير، إذا كان هناك هو واحد. كل نموذج في withحظر هو فيها، بالترتيب. عند العثور على معالج استثناء مطابق، ‏‏ استثناء تعتبر المعالجة؛ وإلا، مكدس هو تفكيك و withتحديد الكتل عن سلسلة الاتصال حتى يتم العثور على معالج توافق. أي finallyكما يتم تنفيذ كتل التي يتم مواجهتها في سلسلة الاتصال في تسلسل كـ unwinds المكدس.

raiseدالة هو المكافئ ل "throwفي C# أو C + +." استخدام reraiseفي معالج catch إلى ينشر نفس ‏‏ استثناء لأعلى سلسلة الاتصال.

توضح الأمثلة تعليمات برمجية التالية الاستخدام raiseالدالة إلى إنشاء الاستثناءات.

exception InnerError of string
exception OuterError of string

let function1 x y =
   try
     try
        if x = y then raise (InnerError("inner"))
        else raise (OuterError("outer"))
     with
      | InnerError(str) -> printfn "Error1 %s" str
   finally
      printfn "Always print this."


let function2 x y =
  try
     function1 x y
  with
     | OuterError(str) -> printfn "Error2 %s" str

function2 100 100
function2 100 10

raiseيمكن أيضا استخدام دالة إلى رفع الاستثناءات.NET، كما هو موضح في المثال التالي.

let divide x y =
  if (y = 0) then raise (System.ArgumentException("Divisor cannot be zero!"))
  else
     x / y

راجع أيضًا:

المرجع

أنواع الاستثناءات (F#)

الاستثناءات: حاول... مع تعبير (F#)

الاستثناءات: حاول... وأخيراً تعبير (F#)

الاستثناءات: failwith دالة (F#)

الاستثناءات: invalidArg دالة (F#)

موارد أخرى

‏‏ استثناء معالجة (F#)