Sdílet prostřednictvím


Výjimky: Funkce raise (F#)

raise Funkce se používá k označení, že došlo k chybě nebo výjimečných podmínek.Informace o chybě je zachycena výjimka objektu.

raise (expression)

Poznámky

raise Funkce generuje výjimku objekt a iniciuje zásobníku příkazem procesu.Společný jazykový modul runtime (CLR) spravovat proces unwinding zásobníku tak chování tohoto procesu je stejný jako v jakékoli jiné.NET jazyk.Unwinding proces zásobníku je hledat popisovač výjimky odpovídající generované výjimku.Vyhledávání začne v aktuálním try...with výraz, pokud existuje.Každý vzorek v with bloku je kontrolována v pořadí.Pokud je nalezen odpovídající popisovač výjimky, výjimka se považuje za zpracování; Zásobník je jinak, unwound a with bloky nahoru v řetězu volání jsou kontrolovány, dokud není nalezen odpovídající popisovač.Všechny finally bloků, které se vyskytují v řetězci volání také provedeny v pořadí jako unwinds zásobníku.

raise Je ekvivalent funkce throw v C# nebo C++.Použití reraise v úlovku popisovač k šíření stejné výjimky až řetěz volání.

Následující kód příklady ilustrují použití raise funkci generování výjimku.

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 Funkci lze také zvýšit.NET výjimky, jak je znázorněno v následujícím příkladu.

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

Viz také

Referenční dokumentace

Typy výjimek (F#)

Výjimky: Výraz try...with (F#)

Výjimky: Výraz try...finally (F#)

Výjimky: Funkce failwith (F#)

Výjimky: Funkce invalidArg (F#)

Další zdroje

Zpracování výjimek (F#)