أنواع الاستثناءات (F#)
توجد فئتان من الاستثناءات في F#: أنواع استثناءات.NET و F# أنواع استثناء. يصف هذا pic إلى كيف إلى تعريف واستخدام الأنواع استثناء ب #.
exception exception-type of argument-type
ملاحظات
في بناء الجملة السابق، exception-typeهو الاسم الخاص ب # استثناء نوع جديد، و argument-typeيمثل نوع وسيطة التي يمكن توفيرها عندما تقوم برفع إستثناء من هذا النوع. يمكنك تعيين وسائط متعددة بواسطة استخدام نوع المجموعة ل argument-type.
تعريف نموذجية ب # استثناء لما يلي.
exception MyError of string
يمكنك توليد استثناء لهذا نوع باستخدام raiseدالة، كما يلي.
raise (MyError("Error message"))
يمكنك استخدام F# نوع استثناء مباشرة في عوامل التصفية في try...withالتعبير، كـ هو موضح في المثال التالي.
exception Error1 of string
// Using a tuple type as the argument type.
exception Error2 of string * int
let function1 x y =
try
if x = y then raise (Error1("x"))
else raise (Error2("x", 10))
with
| Error1(str) -> printfn "Error1 %s" str
| Error2(str, i) -> printfn "Error2 %s %d" str i
function1 10 10
function1 9 2
نوع استثناء الذي تقوم بتعريفه مع exceptionكلمة أساسية في ب # هو التي ترث من نوع جديد Exception.