MailboxProcessor e exceções
Eu quero saber porqueMailboxProcessor
A estratégia padrão de lidar com exceções é apenasignore silenciosamente eles. Por exemplo:
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
e nada acontece. Não há parada fatal da execução do programa ou surge uma caixa de mensagem com "Uma exceção não tratada". Nada.
Esta situação se agrava se alguém usaPostAndReply
método: um impasse garantido como resultado.
Quaisquer razões para tal comportamento?