gpt4 book ai didi

f# - 邮箱处理器和异常

转载 作者:行者123 更新时间:2023-12-02 18:13:53 25 4
gpt4 key购买 nike

我想知道,为什么 MailboxProcessor 处理异常的默认策略只是默默地忽略它们。例如:

let counter =
MailboxProcessor.Start(fun inbox ->
let rec loop() =
async { printfn "waiting for data..."
let! data = inbox.Receive()
failwith "fail" // simulate throwing of an exception
printfn "Got: %d" data
return! loop()
}
loop ())
()
counter.Post(42)
counter.Post(43)
counter.Post(44)
Async.Sleep 1000 |> Async.RunSynchronously

什么也没发生。程序执行不会发生致命停止,也不会出现带有“未处理的异常”的消息框。没什么。

如果有人使用 PostAndReply 方法,这种情况会变得更糟:结果肯定是死锁。

这种行为有什么原因吗?

最佳答案

MailboxProcessor 上有一个 Error 事件。

http://msdn.microsoft.com/en-us/library/ee340481

counter.Error.Add(fun e -> printfn "%A" e)

当然,如果你想自己进行精细控制,你可以做类似Tomas的解决方案。

关于f# - 邮箱处理器和异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10805035/

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