Aracılığıyla paylaş


Özel durumlar: alçaltma işlevini (F#)

raise İşlevi bir hata veya olağanüstü durum oluştuğunu belirtmek için kullanılır. Hata hakkında bilgi, bir özel durum nesnesi içinde yakalanır.

raise (expression)

Notlar

raise İşlevi bir özel durum nesnesi oluşturur ve bir yığın işlemi unwinding başlatır. Bu işlem davranışını aynı dilinde olduğu gibi bu nedenle yığın unwinding işlem common language runtime (clr) tarafından yönetilir.net dili. Yığın unwinding oluşturulan özeldurumla eþleþen bir özel durum işleyici için arama işlemidir. Geçerli aramayı başlatır try...with varsa ifade. Her desende with blok seçiliyse, sırayla. Eşleşen bir özel durum işleyici bulunduğunda, özel durum olarak ele değerlendirilir. Aksi halde, yığın unwound ve with eşleşen bir işleyici bulunana kadar çağrı zincirini yukarı bloklar denetlenir. Herhangi bir finally yığın unwinds gibi çağrı zincirinde karşılaşılan engeller sırayla da çalıştırılır.

raise İşlevi aynıdır throw C# ya da C++. Use reraise aynı özel çağrısı zinciri kurma yaymak için bir catch iþleyicisi içinde.

Aşağıdaki kod örnekleri kullanımını göstermek raise bir özel durum oluşturmak için işlev.

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 İşlevi de yükseltmek için kullanılabilir.Aşağıdaki örnekte gösterildiği gibi net özel durumlar.

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

Ayrıca bkz.

Başvuru

Özel durum türü (F#)

Özel durumlar: Try deyimi (F#) ile...

Özel durumlar: Try... son olarak ifade (F#)

Özel durumlar: Failwith işlev (F#)

Özel durumlar: İnvalidArg işlev (F#)

Diğer Kaynaklar

Özel durum işleme (F#)