Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Cria uma computação assíncrono que executa uma computação especificada.Se esta computação concluída com sucesso, então retorna Choice1Of2 de esse método com o valor retornado.Se esta computação gera uma exceção antes de concluir em Choice2Of2 de retorno com a exceção gerada.
Namespace/Module Path: Microsoft.FSharp.Control
Assembly: FSharp.Core (em FSharp.Core.dll)
// Signature:
static member Catch : Async<'T> -> Async<Choice<'T,exn>>
// Usage:
Async.Catch (computation)
Parâmetros
computation
Tipo: Async<'T>A computação de entrada que retorna o tipo “T.
Valor de retorno
Uma computação que retorna escolha do tipo “T ou uma exceção.
Exemplo
O exemplo de código a seguir mostra como usar Async.Catch para executar uma computação assíncrono que pode lançar uma exceção.
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)
Plataformas
O windows 8, Windows 7, Windows Server 2012, Windows Server 2008 R2
Informações de Versão
Versões da biblioteca principal de F#
Suportado em: 2,0, 4,0, portáteis