共用方式為


例外狀況: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

請參閱

參考

例外狀況類型 (F#)

例外狀況:try...with 運算式 (F#)

例外狀況:try...finally 運算式 (F#)

例外狀況:failwith 函式 (F#)

例外狀況:invalidArg 函式 (F#)

其他資源

例外狀況處理 (F#)