أنواع الاستثناءات (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.

راجع أيضًا:

المرجع

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

المبادئ

تسلسل هرمي الاستثناء

موارد أخرى

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