Compartilhar via


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

Tipos de exceções (F#)

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#)

Outros recursos

Tratamento (F#) de exceção