例外狀況:raise 函式 (F#)
raise 函式可用於表示發生錯誤或例外狀況。 例外狀況物件中會擷取錯誤相關資訊。
raise (expression)
備註
raise 函式會產生例外狀況物件並啟始堆疊回溯程序。 堆疊回溯程序是由 Common Language Runtime (CLR) 管理,因此這個程序的行為與任何其他 .NET 語言中的相同。 堆疊回溯程序會搜尋符合所產生之例外狀況的例外處理常式。 從目前 try...with 運算式 (如果有的話) 開始搜尋。 依序檢查 with 區塊中的每個模式。 找到相符例外處理常式時,例外狀況會視為已處理;否則堆疊會回溯,而且在呼叫鏈結中向上檢查 with 區塊,直到找到相符處理常式為止。 當堆疊回溯時,同時也會依序檢查呼叫鏈結中的任何 finally 區塊。
raise 函式相當於 C# 或 C++ 中的 throw。 在 Catch 處理常式中使用 reraise,以將相同的例外狀況傳播至呼叫鏈結。
在下列程式碼範例中,會示範如何使用 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