Ö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 durumlar: Try deyimi (F#) ile...
Özel durumlar: Try... son olarak ifade (F#)
Özel durumlar: Failwith işlev (F#)
Özel durumlar: İnvalidArg işlev (F#)