catch
AsyncResult.catch
Function Signature:
(exn -> 'error) -> Async<Result<'ok, 'error>> -> Async<Result<'ok, 'error>>Examples
Example 1
let result : Async<Result<int, string>> =
async { return failwith "something went wrong" }
|> Async.map Ok
|> AsyncResult.catch (fun ex -> ex.Message)
// evaluates to Error "something went wrong"Example 2
let safeFetch (url: string) : Async<Result<string, string>> =
async {
use client = new System.Net.Http.HttpClient()
return! client.GetStringAsync(url) |> Async.AwaitTask |> Async.map Ok
}
|> AsyncResult.catch (fun ex -> sprintf "HTTP error: %s" ex.Message)Example 3
Last updated