Exceções: o aumento de função (F#)
O raise função é usada para indicar que um erro ou condição excepcional 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 um processo de desenrolamento pilha. O processo de desenrolamento de pilha é gerenciado pelo common language runtime (CLR), portanto, o comportamento desse processo é o mesmo, assim como em qualquer outro.NET compatível. O processo de desenrolamento de pilha é uma pesquisa para um manipulador de exceção que coincida com a exceção gerada. A pesquisa começa a atual try...with expressão, se houver um. Cada padrão na with bloco é verificado na ordem. Quando um manipulador de exceções correspondente for encontrado, a exceção é considerada o tratado; Caso contrário, a pilha é organizada e with blocos de cadeia de chamadas são verificados, até que um manipulador correspondente seja encontrado. Qualquer finally blocos são 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 até a cadeia de chamada.
Os exemplos de código a seguir ilustram o uso de 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 exceções, 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: O bloco try... com a expressão (F#)
Exceções: O bloco try... finalmente expressão (F#)
Exceções: A função (F#) de failwith
Exceções: A função (F#) de invalidArg