Compartilhar via


Exceções: a função raise (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ção (F#)

Exceções: a expressão try...with (F#)

Exceções: a expressão try...finally (F#)

Exceções: a função failwith (F#)

Exceções: a função invalidArg (F#)

Outros recursos

Tratamento de exceções (F#)