Exceções: a aumentar a função (F#)
O raise função é usada para indicar que um erro ou uma condição de exceção ocorreu.Informações sobre o erro são capturadas em um objeto de exceção.
raise (expression)
Comentários
O raise função gera um objeto de exceção e inicia uma pilha de desenrolar o processo.O processo de desenrolamento de pilha é gerenciado pelo common language runtime (CLR), o comportamento desse processo é o mesmo, como é em qualquer outro.NET compatível.O processo de desenrolamento de pilha é uma pesquisa por um manipulador de exceção que coincida com a exceção gerada.A pesquisa começa a atual try...with expressão, se houver uma.Cada padrão na with bloco estiver marcado, em ordem.Quando um manipulador de exceções correspondente for encontrado, a exceção é considerada manipulados; Caso contrário, a pilha é organizada e with blocos de cadeia de chamada são verificados, até que um manipulador correspondente seja encontrado.Qualquer finally blocos encontrados na cadeia de chamada também são executados em seqüência conforme a pilha se desdobra.
O raise função é equivalente a throw em C# ou C++.Use reraise em um manipulador catch para propagar a mesma exceção na cadeia de chamada.
Os exemplos de código a seguir ilustram o uso da raise função para gerar uma exceção.
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
O raise função também pode ser usada para elevar.NET gratuitas, conforme mostrado no exemplo a seguir.
let divide x y =
if (y = 0) then raise (System.ArgumentException("Divisor cannot be zero!"))
else
x / y
Consulte também
Referência
Exceções: Try... com a expressão (F#)
Exceções: O bloco try... finalmente expressão (F#)
Exceções: O failwith função (F#)
Exceções: O invalidArg função (F#)