MailboxProcessor y excepciones
Me pregunto porqueMailboxProcessor
La estrategia por defecto de manejo de excepciones es soloignorar en silencio ellos. Por ejemplo:
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
y no pasa nada No hay una parada fatal de la ejecución del programa, o aparece un cuadro de mensaje con "Una excepción no controlada". Nada.
Esta situación empeora si alguien la usa.PostAndReply
Método: un punto muerto garantizado como el resultado.
¿Alguna razón para tal comportamiento?