Async.Catch<'T>, méthode (F#)
Crée un calcul asynchrone qui exécute un calcul spécifié. Si ce calcul s'effectue correctement, cette méthode retourne alors Choice1Of2 avec la valeur retournée. Si ce calcul lève une exception avant de se terminer, retourne Choice2Of2 avec l'exception levée.
Espace de noms/Chemin du module : Microsoft.FSharp.Control
Assembly : FSharp.Core (in FSharp.Core.dll)
// Signature:
static member Catch : Async<'T> -> Async<Choice<'T,exn>>
// Usage:
Async.Catch (computation)
Paramètres
computation
Type : Async<'T>Calcul d'entrée qui retourne le type 'T.
Valeur de retour
Calcul qui retourne un choix de type 'T ou une exception.
Exemple
L'exemple de code suivant montre comment utiliser Async.Catch pour exécuter un calcul asynchrone qui peut lever une exception.
open System
open System.IO
let writeToFile filename numBytes =
async {
use file = File.Create(filename)
printfn "Writing to file %s." filename
do! file.AsyncWrite(Array.zeroCreate<byte> numBytes)
}
let readFile filename numBytes =
async {
use file = File.OpenRead(filename)
printfn "Reading from file %s." filename
do! file.AsyncRead(numBytes) |> Async.Ignore
}
let filename = "BigFile.dat"
let numBytes = 100000000
let result1 = writeToFile filename numBytes
|> Async.Catch
|> Async.RunSynchronously
match result1 with
| Choice1Of2 _ -> printfn "Successfully wrote to file."; ()
| Choice2Of2 exn ->
printfn "Exception occurred writing to file %s: %s" filename exn.Message
// Start these next two operations asynchronously, forcing an exception due
// to trying to access the file twice simultaneously.
Async.Start(readFile filename numBytes)
let result2 = writeToFile filename numBytes
|> Async.Catch
|> Async.RunSynchronously
match result2 with
| Choice1Of2 buffer -> printfn "Successfully read from file."
| Choice2Of2 exn ->
printfn "Exception occurred reading from file %s: %s" filename (exn.Message)
Plateformes
Windows 8, Windows 7, Windows Server 2012, Windows Server 2008 R2
Informations de version
Versions de bibliothèque principale F#
Prise en charge dans : 2,0, 4,0, portables