gpt4 book ai didi

exception-handling - F#中的异步异常处理

转载 作者:行者123 更新时间:2023-12-04 05:24:51 26 4
gpt4 key购买 nike

我正在尝试用 F# 编写非阻塞代码。我需要下载一个网页,但有时该网页不存在,并且 AsyncDownloadString 会抛出异常(404 Not Found)。我尝试了下面的代码,但无法编译。

我如何处理来自 AsyncDownloadString 的异常?

let downloadPage(url: System.Uri) = async {
try
use webClient = new System.Net.WebClient()
return! webClient.AsyncDownloadString(url)
with error -> "Error"
}

我该如何处理这里的异常?如果抛出错误,我只想返回一个空字符串或一个包含消息的字符串。

最佳答案

只需添加 return返回错误字符串时的关键字:

let downloadPage(url: System.Uri) = async {
try
use webClient = new System.Net.WebClient()
return! webClient.AsyncDownloadString(url)
with error -> return "Error"
}

IMO 更好的方法是使用 Async.Catch 而不是返回错误字符串:
let downloadPageImpl (url: System.Uri) = async {
use webClient = new System.Net.WebClient()
return! webClient.AsyncDownloadString(url)
}

let downloadPage url =
Async.Catch (downloadPageImpl url)

关于exception-handling - F#中的异步异常处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16652014/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com