Esporta (0) Stampa
Espandi tutto
Il presente articolo è stato tradotto automaticamente. Passare il puntatore sulle frasi nell'articolo per visualizzare il testo originale. Ulteriori informazioni.
Traduzione
Originale

Eccezioni: funzione raise (F#)

La funzione raise viene utilizzata per indicare che si è verificato un errore o una condizione insolita. Le informazioni sull'errore vengono acquisite in un oggetto eccezione.

raise (expression)

La funzione raise genera un oggetto eccezione e avvia un processo di rimozione dello stack. Il processo di rimozione dello stack viene gestito da Common Language Runtime (CLR), pertanto il comportamento di questo processo è analogo a quello in qualsiasi atro linguaggio .NET. Il processo di rimozione dello stack è una ricerca di un gestore eccezioni corrispondente all'eccezione generata. La ricerca inizia nell'espressione try...with corrente, se presente. Ogni modello nel blocco with viene controllato, in ordine. Quando viene trovato un gestore eccezioni corrispondente, l'eccezione viene considerata gestita. In caso contrario, lo stack viene rimosso e i blocchi with nella catena di chiamate vengono controllati fino a quando non viene trovato un gestore corrispondente. Qualsiasi blocco finally individuato nella catena di chiamate viene inoltre eseguito in sequenza man mano che lo stack viene rimosso.

La funzione raise è equivalente a throw in C# o C++. Utilizzare reraise in un gestore catch per propagare la stessa eccezione sulla catena di chiamate.

Negli esempi di codice seguenti viene illustrato l'utilizzo della funzione raise per generare un'eccezione.


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


La funzione raise può anche essere utilizzata per generare eccezioni .NET, come illustrato nell'esempio seguente.


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


Aggiunte alla community

AGGIUNGI
Microsoft sta conducendo un sondaggio in linea per comprendere l'opinione degli utenti in merito al sito Web di MSDN. Se si sceglie di partecipare, quando si lascia il sito Web di MSDN verrà visualizzato il sondaggio in linea.

Si desidera partecipare?
Mostra:
© 2014 Microsoft