Udostępnij za pośrednictwem


Wyjątki: raise — Funkcja (F#)

raise Funkcja jest używana do wskazania, że wystąpił błąd lub wyjątkowe warunki.Informacje o błędzie są przechwytywane w obiekcie wyjątek.

raise (expression)

Uwagi

raise Funkcji generuje obiekt wyjątku i inicjuje stos niekontrolowanej procesu.Proces odkręcanie stosu jest zarządzany przez common language runtime (CLR), tak zachowanie tego procesu jest taki sam, jak jest w innej.Język netto.Proces odkręcanie stosu jest wyszukiwanie obsługi wyjątku, który odpowiada wygenerowanego wyjątku.Wyszukiwanie rozpoczyna się w bieżącym try...with wyrażenie, jeśli istnieje.Każdy deseń w with bloku jest zaznaczone, w kolejności.Po znalezieniu pasującego procedury obsługi wyjątków wyjątek jest uważany za obsługiwane; w przeciwnym razie stosu jest zwiniętej i with bloków łańcucha wywołania są sprawdzane w celu znalezienia pasujących obsługi.Każdy finally bloków, które pojawiły się w łańcuchu wywołania są wykonywane w sekwencji jako stos odkręcania.

raise Funkcja jest równoważne z throw w języku C# lub C++.Użyj reraise w obsługi catch do propagowania ten sam wyjątek łańcucha połączenia.

W poniższych przykładach kodu ilustrują użycie raise funkcji do wygenerowania wyjątku.

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 Funkcja może również służyć do podnoszenia.Wyjątki netto, jak pokazano w poniższym przykładzie.

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

Zobacz też

Informacje

Typy wyjątków (F#)

Wyjątki: try...with — Wyrażenie (F#)

Wyjątki: try...finally — Wyrażenie (F#)

Wyjątki: failwith — Funkcja (F#)

Wyjątki: invalidArg — Funkcja (F#)

Inne zasoby

Obsługa wyjątków (F#)