الاستثناءات: رفع دالة (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#)
الاستثناءات: failwith دالة (F#)
الاستثناءات: invalidArg دالة (F#)